刷新Cocoa-Binding – NSArrayController – ComboBox

刷新Cocoa-Binding – NSArrayController – ComboBox,第1张

概述在我的应用中,我做了一个非常简单的绑定.我有一个绑定到NSArrayController的NSMutableArray.控制器本身绑定到ComboBox,它显示NSMutableArray的所有内容.工作良好. 问题是:数组的内容会发生变化.如果用户对应用程序进行了一些调整,我会删除NSMuteableArray中的所有项目,并用新的和不同的项目填充它. 但是NSMutableArray< - > 在我的应用中,我做了一个非常简单的绑定.我有一个绑定到NSArrayController的NSMutableArray.控制器本身绑定到ComboBox,它显示NSMutableArray的所有内容.工作良好.

问题是:数组的内容会发生变化.如果用户对应用程序进行了一些调整,我会删除NSMuteableArray中的所有项目,并用新的和不同的项目填充它.

但是NSMutableArray< - >的绑定NSArrayController< - > NSComboBox不刷新.

无论我是否从Array中删除所有对象,ComboBox仍然显示相同的项目.

这有什么不对?我的方法是错误的还是我只需要告诉绑定刷新自己?我没有发现如何做到这一点.

解决方法 你可能“编辑控制器后面的数组”,这颠覆了KVO机制.

你说:

I have a NSMutableArray bound to a NSArrayController.

怎么样?阵列在哪里?在一个文档中,可通过符合KVC / KVO的-myArray / -setMyArray访问:访问器集?

我敢打赌你直接告诉“myArray”ivar -removeAllObjects,对吧?这些KVC / KVO访问器如何“知道”阵列发生了变化?

答案是,他们没有.如果您真的要替换整个数组,那么您需要将您的文档(或拥有该数组的任何人)告诉-setMyArray:到一个全新的数组.这将触发正确的KVO呼叫.

……但是,你真的不需要一个可变数组,对吗?如果您只想替换数组中的单个项,则需要使用索引访问器:

(文档 – 请参阅“To-Many PropertIEs的集合访问器模式”部分)
http://tinyurl.com/yb2zkr5

总结

以上是内存溢出为你收集整理的刷新Cocoa-Binding – NSArrayController – ComboBox全部内容,希望文章能够帮你解决刷新Cocoa-Binding – NSArrayController – ComboBox所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1070005.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存