如果我理解你的问题,你不明白representedObject
是什么。 representedObject
是代表所有视图控制器正在显示的数据的模型对象。这不是当前选择显示内容集合的视图。您的自定义顶级视图控制器的representedObject
将是NSArray
或其他集合类,其中包含您在视图控制器中显示的一组数据。如果正确使用了模式,那么更改您的自定义顶级视图控制器的representedObject
应该具有交换全新数据集的效果。
通常,表格类型视图中各个元素的视图控制器各自都有自己的representedObject
,并且此对象不会更改。例如,如果您使用的是NSCollectionView
,则视图中的每个元素都由NSCollectionViewItem
控制,NSCollectionViewItem
是NSViewController
的子类。每个NSCollectionViewItem
的representedObject
都会告诉它什么数据要呈现在它的小视图中。
NSOutlineView
和它的超NSTableView
是不同的,因为他们的细胞往往NSCells
,而不是完全成熟的NSViews
,除非你选择使用它们在Mac OS X 10.7或更新这种方式。即使在这种情况下,您通常也不会有管理每个单元的NSViewController
子类。所以视图控制器representedObject
模式不会在用户选择的单个元素的级别上使用。如果你想要跟踪NSOutlineView
的选择,有很多NSTableView
方法可以让你做到这一点。
啊,我明白了 - 谢谢你;这回答了我的问题。 –