将自定义NSView与自定义NSObject绑定的最佳方法

时间:2016-05-07 17:22:37

标签: objective-c cocoa binding

我正在尝试将自定义NSView中的属性绑定到自定义NSObject上的另一个属性。这两个属性都是简单的bool值。

作为自定义绑定的新手,我已经阅读了Apple文档并在stackoverflow上进行了搜索。

所以我创建了一个自定义的NSView和一个自定义的NSObject,为两者添加了一个名为'enabled'的bool属性,并用httr::POST(url, x$config, ..., handle = x$handle)

绑定它们

我的customView使用本文http://www.tomdalling.com/blog/cocoa/implementing-your-own-cocoa-bindings/中介绍的方法来通知值的更改并防止内存保留问题。

我启动了我的应用,它有效!精彩......但它只有一种方式绑定!当我单击我的customView时,自定义对象的属性会更新(右)但如果自定义对象的属性值发生更改,我的自定义视图的属性不会更新(Grrrr)

我有点困惑,因为据我了解自定义绑定,Apple建议手动实现bind:toObject:withKeyPath:options并注册一个观察者来跟踪属性的值变化,而Tom Dalling的方法则相反。

那么以双向方式绑定我的属性的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

这个SO答案here表示您只是以另一种方式设置对称绑定。我没试过这个,但听起来下面的内容会有效。

[myObject bind:@"enabled" toObject:myCustomView withKeyPath:@"enabled" options:nil];

答案 1 :(得分:0)

  

我有点困惑,因为据我了解自定义绑定,Apple建议手动实现bind:toObject:withKeyPath:options并注册一个观察者来跟踪属性的值变化,而Tom Dalling的方法则相反。

你必须实现这两个。您必须使用密钥路径@“已启用”来观察myObject,因此当myObject.enabled更改时,您可以更改myCustomView.enabledmyObject.enabled更改时,您必须设置myCustomView.enabled

请参阅Responding to Changes