
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只返回一个值所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)