5

我想将 an 的布尔enabled属性绑定到 anNSTextField的状态NSButton。我已经尝试添加一个自定义NSValueTransformer,将状态转换NSButtonNSNumber. 但是,在这种情况下,由于某种原因,文本字段一直被禁用。我的第二种方法:糟糕也失败了,因为NSValueTransformer不提供返回原语类型,例如BOOL.

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

禁用的文本字段

此外,如果我可以在 Interface Builder 中设置“禁用文本” ,那将很方便。在上面的示例中,我在关联类中设置了文本。


编辑:

我将帐户文本字段的启用self.anonymousLoginCheckbox.state属性设置为模型键路径。密码文本字段类似。但是,它不起作用

界面生成器绑定


更新:

在 GitHub 上创建了一个示例项目,展示了Nicolas Bachschmidt 所描述的实现。

4

1 回答 1

15

NSButton不符合 KVO 的 key state。Cocoa 绑定要求被观察对象在被观察属性发生变化时发出通知。As NSButton'sstate只是其单元格的包装器,state-[NSButton setState:]用户单击按钮时,不会调用方法(和自动 KVO 通知)(但是-[NSCell setState:]是)。如果将模型密钥路径设置为self.anonymousLoginCheckbox.cell.state,它将起作用。

于 2012-07-02T18:30:41.883 回答