2012-02-20 38 views
1

我只是试图使用复选框来启用/禁用NSTextField。我列出我试图在细节的最后一个方法之下,但我已经尝试过多种方式:可可绑定不按预期工作?试图绑定NSTextField的启用复选框状态

  1. 使用的NSObjectController绑定到控制器和复选框和标签绑定到NSObjectController选择与财产的关键路径内容对象控制器。有和没有NSIsNil变压器。

  2. 没有将复选框和标签绑定到控制器的NSObjectController与控制器中的BOOL属性的键路径。有和没有NSIsNil变压器。

  3. NSObjectController添加了键和“准备内容”设置复选框和标签绑定到NSObjectController选择和添加键路径的关键。有和没有NSIsNil变压器。

我已经过了很多例子,阅读文档,并没有运气得到这个工作。

  1. 清洁项目可可项目。
  2. 将NSObjectController“对象控制器”添加到main.xib中。
  3. 在IB中将NSObjectController设置为“准备内容”
  4. 将值“enableText”添加到键。
  5. 拖动复选框和标签到视图中。
  6. 将绑定添加到绑定到“对象控制器”的“值”的复选框,其中控制器关键字“选择”和模式关键路径“enableText”。此时,自动完成报告“找不到完成”!它应该找不到我添加到对象控制器的那个?
  7. 将绑定添加到绑定到“对象控制器”的“已启用”的标签上,其中带有控制器关键字“选择”和模式关键路径“enableText”。同上。

运行和它崩溃。如果我将标签绑定设置为具有NSIsNil的Transformer或它提供的任何选项,它不会崩溃,但是复选框不会更改标签的启用状态。崩溃结果如下。

值得注意的是,如果我还在标签值和与启用的绑定相同的键之间添加了绑定,则当我切换复选框时,标签内容会在0和1之间切换。所以,这看起来应该很容易适用于已启用的绑定......但事实并非如此。

2012-02-20 23:43:58.273 TestBindings2[12346:903] -[_NSControllerObjectProxy copyWithZone:]: unrecognized selector sent to instance 0x10
2012-02-20 23:43:58.275 TestBindings2[12346:903] An uncaught exception was raised 
2012-02-20 23:43:58.276 TestBindings2[12346:903] -[_NSControllerObjectProxy copyWithZone:]: unrecognized selector sent to instance 0x10
2012-02-20 23:43:58.278 TestBindings2[12346:903] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[_NSControllerObjectProxy copyWithZone:]: unrecognized selector sent to instance 0x10' 

使用XCode 4.2和OSX 10.6.8。

回答

1

只是试图以与“启用”完全相同的方式绑定标签的“隐藏”,它确实隐藏了它。这让我意识到我正在用绑定正确地做事。我试图手动禁用该标签,并看到这没有做任何事情。然后我看到某个地方说标签是启用的NSTextFields,这表明它们不能被禁用的可能性。果然,将标签更改为文本字段并且功能按预期工作。

相关问题