objective-c – NSArrayController上的SelectionIndexes只返回一个值

objective-c – NSArrayController上的SelectionIndexes只返回一个值,第1张

概述我有一个NSCollectionView,其内容由NSArrayController处理. NSCollectionView是可选择的,我需要检索所选元素的列表. 我正在尝试观察NSArrayController“selectionIndexes”的关键属性,但它只返回我总是CollectionView中第一个元素的值而不是所选项. - (void)observeValueForKeyPath:( 我有一个NSCollectionVIEw,其内容由NSArrayController处理.
NSCollectionVIEw是可选择的,我需要检索所选元素的列表.
我正在尝试观察NSArrayController“selectionIndexes”的关键属性,但它只返回我总是CollectionVIEw中第一个元素的值而不是所选项.

- (voID)observeValueForKeyPath:(Nsstring *)keyPath ofObject:(ID)object change:(NSDictionary *)change context:(voID *)context{    if([keyPath isEqualTo:@"selectionIndexes"])    {        //True if in the array controller of the collection vIEw really exists at least a selected object        if([[arrayController selectedobjects] count] > 0)        {            NSLog(@"Selected objects: %@",[arrayController selectedobjects]);        }        else        {            NSLog(@"Observer called but no objects where selected.");        }    }}

UPDATE

我永远不会调用这个方法,如果我手动调用NSLog(@“Selected objects:%@”,[arrayController selectedobjects])我得到这个

结果总是这样的

结束更新

2011-07-05 20:44:45.711 collectionVIEw2[2153:903] Selected objects 1: (    "<Hormiga: 0x10013e330>")

我想我已经做了一些错误的NSArrayController与NSCollectionVIEw绑定.可能是我的错?
告诉我如果你想要更多信息,我甚至可以在你需要的时候以邮政编码发布整个程序.

更新2

这是我在我的控制器中用来观察arrayController“selectionIndexes”键的代码.

[arrayController addobserver:self forKeyPath:@"selectionIndexes" options:NSkeyvalueObservingOptionNew context:nil];

更新3

其中一个问题是修复的,我忘了在NSArrayController和NSCollectionVIEw之间设置相对于键“selectionIndexes”的绑定.现在我可以手动检索selectedobject列表及其正确!

我的最后一个问题是,当selectionIndexes发生变化时,我没有收到通知.
所以observeValueForKeyPath:ofObject:change:context:永远不会被调用!

更新4

我试图在我的控制器的init方法中设置观察者,但是这样arrayController仍然是null.在awakeForNib中移动addobserver解决了我所有的问题!

解决方法 如果要使阵列控制器的选择索引与集合视图保持同步,则还需要绑定它们.综上所述:

>将集合视图Content绑定到数组控制器,key arrangeObjects
>将集合视图选择索引绑定到数组控制器,键选择索引.

此外,确保在添加观察者之前已设置了arrayController.保证在-awakeFromNib和其后调用的其他方法中设置出口:如果你使用的是窗口控制器,你可以使用-windowDIDLoad;如果您使用的是视图控制器,则可以使用-loadVIEw;否则,-applicationDIDFinishLaunching:在您的应用程序委托中.

总结

以上是内存溢出为你收集整理的objective-c – NSArrayController上的SelectionIndexes只返回一个值全部内容,希望文章能够帮你解决objective-c – NSArrayController上的SelectionIndexes只返回一个值所遇到的程序开发问题。

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

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

原文地址:https://54852.com/web/1017367.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存