-->

可可:如何将布尔属性绑定到NSCellStateValue?(Cocoa: How to bind

2019-09-18 12:26发布

我想布尔绑定enabled的财产NSTextField到的状态NSButton 。 我已经尝试添加自定义NSValueTransformer是变换的状态NSButtonNSNumber 。 然而,在这种情况下的文本字段禁用所有的时间出于某种原因。 我的第二个办法:要坏失败也因为NSValueTransformer不提供返回原语类型,如BOOL

例:
该屏幕截图示出了文本字段被禁用,因为该复选框的状态为一个例子NSOnState 。 我还想标签绑定到这个状态。

此外,这将是方便,如果我可以设置在界面生成器“禁用文本”。 在上面的例子中,我设置在相关联的类的文本。


编辑:

我设置self.anonymousLoginCheckbox.state作为帐户文本字段的enabled属性模型关键路径 。 类似的密码文本字段。 但是,这行不通的。


更新:

我创建了一个在GitHub上可用的示例项目显示了实施由Nicolas Bachschmidt好心描述。

Answer 1:

NSButton不符合志愿的关键state 。 可可绑定需要被观察的物体发出通知所观察到的属性发生变化时。 作为NSButtonstate仅仅是针对其小区的一个包装state-[NSButton setState:]方法(和自动KVO通知)不是当用户点击按钮(但调用-[NSCell setState:]是)。 如果设置为模型的关键路径self.anonymousLoginCheckbox.cell.state ,它会工作。



文章来源: Cocoa: How to bind a boolean property to NSCellStateValue?