我只是尝试使用复选框来启用/禁用NSTextField。我在下面详细介绍了我尝试的最后一种方法,但我尝试了多种方法:
使用NSObjectController与内容对象绑定到控制器,复选框和标签绑定到NSObjectController选择与控制器中属性的关键路径。有无NSIsNil Transformer。
没有NSObjectController,其复选框和标签绑定到控制器,控制器中的BOOL属性的键路径。有无NSIsNil Transformer。
添加了键的NSObjectController和“准备内容”设置了复选框和标签绑定到NSObjectController选择并添加了键路径的键。有无NSIsNil Transformer。
我已经阅读了大量的例子并阅读了文档,并且没有运气这样做。
运行并崩溃。如果我将标签绑定设置为具有NSIsNil的Transformer或它提供的任何选项,则它不会崩溃,但是复选框不会更改标签的启用状态。崩溃结果如下。
值得注意的是,如果我还在标签值和与启用的绑定相同的键之间添加绑定,那么当我切换复选框时,标签内容会在0和1之间切换。所以,这看起来应该很容易适用于启用的绑定......但事实并非如此。
2012-02-20 23:43:58.273 TestBindings2[12346:903] -[_NSControllerObjectProxy copyWithZone:]: unrecognized selector sent to instance 0x100123540
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 0x100123540
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 0x100123540'
使用XCode 4.2和OSX 10.6.8。
答案 0 :(得分:1)
试图以与“启用”完全相同的方式绑定Label的“隐藏”,它确实隐藏了它。这让我意识到我正在通过绑定正确地做事。我试图手动禁用Label,看到这没有做任何事情。然后我在某个地方看到它表示标签是启用的NSTextFields,这表明它们无法被禁用。果然,将标签更改为文本字段,功能按预期工作。