2012-08-09 73 views
1

我有一首歌曲正在播放应用程序。歌曲被加载到NSCollectionView中。有两个控制器:如何将集合视图项目设置为委托?

  • WindowController
  • SongViewController(控制器为CollectionViewItem的看法)

两个窗口,每个单独的歌曲观点已经播放按钮。所以当我按下窗口播放时,歌曲视图的播放按钮需要更新以显示暂停/播放状态,反之亦然。

当我按下播放键在SongView,没问题,我可以设置_delegate = [[NSApp mainWindow] windowController]

但这里是我的问题:你如何看待周围的其他方式?如何将SongViewController设置为WindowController的委托。大约有20个CollectionViewItems,因此有20个SongViewController。我如何找到并设置正确的。另外,我对Objective-C非常陌生,如果我以奇怪的方式接近它,请告诉。

:)

回答

0

NSCollectionView有一个方法(NSCollectionViewItem *)itemAtIndex:(NSUInteger)index在特定的索引来访问NSCollectionViewItem。 NSCollectionViewItem继承自NSViewController,因此您可以访问它控制的视图来设置委托。

虽然这是技术性的答案,但我使用通知中心和绑定解决了问题,我发现它更简单,更高效。