【问题标题】:Cocoa: How to bind a boolean property to NSCellStateValue?Cocoa:如何将布尔属性绑定到 NSCellStateValue?
【发布时间】:2012-06-25 17:00:22
【问题描述】:

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

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

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


编辑:

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


更新:

我创建了一个 example project available on GitHub showing the implementation,由 Nicolas Bachschmidt 亲切地描述。

【问题讨论】:

    标签: cocoa state cocoa-bindings nstextfield nsvaluetransformer


    【解决方案1】:

    NSButton 对于密钥 state 不兼容 KVO。 Cocoa 绑定要求被观察对象在被观察属性发生变化时发出通知。由于NSButtonstate 只是其单元格state 的包装器,所以-[NSButton setState:] 方法(和自动KVO 通知)在用户单击按钮时不会被调用(但-[NSCell setState:] 是)。如果将模型密钥路径设置为self.anonymousLoginCheckbox.cell.state,则可以使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-21
      • 1970-01-01
      • 2012-11-15
      • 2011-08-26
      • 2016-09-26
      • 1970-01-01
      • 2020-04-15
      相关资源
      最近更新 更多