我想将enabled
的布尔NSTextField
属性绑定到NSButton
的状态。我之前已尝试添加自定义NSValueTransformer
,将NSButton
的状态转换为NSNumber
。但是,在该场景中,由于某种原因,文本字段始终处于禁用状态。我的第二种方法:由于NSValueTransformer
不提供返回原语类型,例如BOOL
,因此错误也会失败。
示例:
屏幕截图显示了禁用文本字段的示例,因为该复选框具有状态NSOnState
。我也想将标签绑定到这种状态。
此外,如果我能在Interface Builder 中设置“禁用文本”,那将会很方便。在上面的例子中,我在关联的类中设置了文本。
修改
我将self.anonymousLoginCheckbox.state
设置为帐户文本字段的已启用属性的模型密钥路径。类似于密码文本字段。但是,不工作。
更新
我创建了一个由Nicolas Bachschmidt友情描述的example project available on GitHub showing the implementation。
答案 0 :(得分:14)
NSButton
, state
不符合KVO标准。 Cocoa Bindings要求观察对象在观察到的属性发生变化时发出通知。由于NSButton
的{{1}}只是其单元格state
的包装器,因此当用户点击按钮时,不会调用state
方法(以及自动KVO通知)但是-[NSButton setState:]
是。如果您将模型密钥路径设置为-[NSCell setState:]
,它将起作用。