在NSTableView中恢复选择(NSWindowRestoration)

时间:2012-08-08 09:37:27

标签: cocoa nstableview nswindowrestoration

我正在基于非文档的Cocoa应用程序中进行窗口恢复。该应用程序具有类似Mail.app的界面。每个窗口代表一个帐户;该窗口中的侧边栏列出该帐户中的会话,主区域列出所选会话中的消息。

这些列表中的每一个都是基于视图的NSTableView。会话列表绑定到NSArrayController,其contentSet绑定到窗口控制器的account属性;消息列表绑定到第二个NSArrayController,其contentSet绑定到第一个NSArrayController的选择。

我已经将窗口恢复工作重新打开所有窗口并将它们与帐户对象重新关联,但我不知道如何恢复表格视图的选择。这似乎不会自动发生 - 当窗口恢复时,选择了一个对象,但它不是之前选择的对象。这里发生了什么?保存和恢复选择的最简单方法是什么?

1 个答案:

答案 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