我只是试图使用复选框来启用/禁用NSTextField。我列出我试图在细节的最后一个方法之下,但我已经尝试过多种方式:可可绑定不按预期工作?试图绑定NSTextField的启用复选框状态
使用的NSObjectController绑定到控制器和复选框和标签绑定到NSObjectController选择与财产的关键路径内容对象控制器。有和没有NSIsNil变压器。
没有将复选框和标签绑定到控制器的NSObjectController与控制器中的BOOL属性的键路径。有和没有NSIsNil变压器。
NSObjectController添加了键和“准备内容”设置复选框和标签绑定到NSObjectController选择和添加键路径的关键。有和没有NSIsNil变压器。
我已经过了很多例子,阅读文档,并没有运气得到这个工作。
- 清洁项目可可项目。
- 将NSObjectController“对象控制器”添加到main.xib中。
- 在IB中将NSObjectController设置为“准备内容”
- 将值“enableText”添加到键。
- 拖动复选框和标签到视图中。
- 将绑定添加到绑定到“对象控制器”的“值”的复选框,其中控制器关键字“选择”和模式关键路径“enableText”。此时,自动完成报告“找不到完成”!它应该找不到我添加到对象控制器的那个?
- 将绑定添加到绑定到“对象控制器”的“已启用”的标签上,其中带有控制器关键字“选择”和模式关键路径“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。