我正在尝试将自定义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的方法则相反。
那么以双向方式绑定我的属性的最佳方法是什么?
答案 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.enabled
。 myObject.enabled
更改时,您必须设置myCustomView.enabled
。