2013-12-11 33 views
0

我試圖在NSTableView之間選擇一個行來保存應用運行。跨運行恢復核心數據主 - 細節選擇

我有一個NSTableView作爲主視圖,和NSCollectionView爲詳細視圖。我的示例項目位於:
http://www.filesend.net/download.php?f=3f34594d71e32b2c1fbef768eccb56b0

這兩個視圖與可可綁定相關的NSArrayControllers正確綁定。這些依次綁定到主實體,細節實體和CoreData存儲中的一對多關係「myChildren」。 「myDetailAC」內容集綁定到CD關係。在我的App Delegate中,我在applicationDidFinishLaunching回調中創建了一些示例數據。

這一切運行良好,一旦應用程序啓動並運行...選擇表的行導致詳細NSCollectionView顯示主項目的詳細信息。實際上,我已經構建了一個使用Core Data和Cocoa綁定的Master-Detail設置的良好開端示例。

問題是這樣的:當我退出應用程序並重新啓動它時,我想用最近的主選擇(並自動選擇合適的詳細數據集)選擇TableView行。

我的CD Master主體中的一個屬性是isSelected,它基於最後一次選擇NSTableView的哪一行來設置。

我試圖重寫「MasterAC.m」 NSArrayController的主表,在這裏,我試圖調用setSelectionIndexes從內它的基礎上的isSelected標誌,以改變陣列控制器的選擇。我從內這樣做陣列控制器的arrangeObjects方法。

沒有骰子。

任何人都可以幫忙與整個示例應用程序的運行持續表格選擇?

總之,如果我退出與「家長#3」選擇的應用程序,然後再次運行應用程序將導致選擇「家長#3」及其詳細信息。

SO上的一些其他建議使用NSUserDefaults處理此問題,但不處理Core Data。
Restoring the selection in an NSTableView (NSWindowRestoration)

回答

0

如果你的目標是新的操作系統,最簡單的解決方案是使用「狀態恢復」。它會進入主表格,並基本上重新點擊您的選擇,甚至可以滾動到正確的位置。它工作時有點神奇。