有些日子,我只想把头靠在墙上。在处理Cocoa和Apple的超级通用文档时尤其如此。 (Apple的文档实际上非常好,我只是生气,我无法弄清楚这一点)
好的,所以我有一个'IOWallpaper'类,它存储一个'name'和'path' - 它连接到一个ArrayController
然后将此ArrayController连接到NSCollectionView,以便可以使用NSCollectionViewItem填充NSCollectionView。
我正在努力使你可以在NSCollectionView中选择一个项目,当你点击该项目时,它会从数组中返回它表示的IOWallpaper对象。
我最接近实现这一点的方法是在NSCollectionView上设置'Selection Indexes'绑定,然后使用observeValueForKeyPath作为'selectionIndexes'键。它知道我已经选择了1个对象,但我无法从使用观察者返回的NSArrayController对象中获取IOWallpaper对象。
基本上,我想将observeValueForKeyPath中的(id)'object'参数转换回IOWallpaper对象,以便我可以访问它的成员?
这可能没有任何意义,但这是我能解释的最好的。
感谢您的聆听。
答案 0 :(得分:0)
回答你提出的问题:只是强调它:
IOWallpaper * myWallpaper = (IOWallpaper*) object[0];
除此之外,您应该观察NSMenuDidEndTrackingNotification以捕获选择点击:
// listen for end track event of our menu (the bottleneck for handling selections)
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleEndTrack:)
name:NSMenuDidEndTrackingNotification
object:[[[self view] enclosingMenuItem] menu]];
这是从GridMenu sample project“借来的”。