Tal*_*ode 3 cocoa nsarraycontroller cocoa-bindings
在我的应用中,我做了一个非常简单的绑定.我有一个绑定到NSArrayController的NSMutableArray.控制器本身绑定到ComboBox,它显示NSMutableArray的所有内容.工作良好.
问题是:数组的内容会发生变化.如果用户对应用程序进行了一些调整,我会删除NSMuteableArray中的所有项目,并用新的和不同的项目填充它.
但是NSMutableArray < - > NSArrayController < - > NSComboBox的绑定不会刷新.
无论我是否从Array中删除所有对象,ComboBox仍然显示相同的项目.
这有什么不对?我的方法是错误的还是我只需要告诉绑定刷新自己?我没有发现如何做到这一点.
你可能"编辑控制器后面的数组",这颠覆了KVO机制.
你说:
我有一个绑定到NSArrayController的NSMutableArray.
怎么样?阵列在哪里?在一个文档中,可通过符合KVC/KVO的-myArray/-setMyArray访问:访问器集?
我敢打赌你直接告诉"myArray"ivar -removeAllObjects,对吧?这些KVC/KVO访问器如何"知道"阵列发生了变化?
答案是,他们没有.如果您真的要替换整个数组,那么您需要将您的文档(或拥有该数组的任何人)告诉-setMyArray:到一个全新的数组.这将触发正确的KVO呼叫.
......但是,你真的不需要一个可变数组,对吗?如果您只想替换数组中的单个项,则需要使用索引访问器:
(文档 - 请参阅"To-Many Properties的集合访问器模式"部分) http://tinyurl.com/yb2zkr5
| 归档时间: |
|
| 查看次数: |
4686 次 |
| 最近记录: |