我正在基于非文档的Cocoa应用程序中进行窗口恢复。该应用程序具有类似Mail.app的界面。每个窗口代表一个帐户;该窗口中的侧边栏列出该帐户中的会话,主区域列出所选会话中的消息。
这些列表中的每一个都是基于视图的NSTableView
。会话列表绑定到NSArrayController
,其contentSet
绑定到窗口控制器的account
属性;消息列表绑定到第二个NSArrayController
,其contentSet
绑定到第一个NSArrayController
的选择。
我已经将窗口恢复工作重新打开所有窗口并将它们与帐户对象重新关联,但我不知道如何恢复表格视图的选择。这似乎不会自动发生 - 当窗口恢复时,选择了一个对象,但它不是之前选择的对象。这里发生了什么?保存和恢复选择的最简单方法是什么?
答案 0 :(得分:5)
如您所知,NSTableView
不会自动保存选择。
最简单的方法是将NSTableView
的{{1}}绑定到selectionIndexes
的{{1}},并保存/检索Array Controller
中的值。然后,您可以将数组控制器的selectionIndexes
绑定到NSUserDefaults
(使用Controller Key selectionIndexes
,然后您可以将Shared User Defaults Controller
命名为任何内容。由于values
需要存档/取消存档才能存储,因此请使用Model Key Path
值转换器。这本身应该有用。
如果您遇到麻烦,就像选择索引重置一样,因为表视图没有立即重新填充(我怀疑您有这些问题,因为您正在填充绑定),您可以手动保存默认值。 / p>
NSIndexSet
并检索它们:
NSKeyedUnarchiveFromData