如果我理解你的問題,你不明白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
方法可以讓你做到這一點。
啊,我明白了 - 謝謝你;這回答了我的問題。 –