cocoa – 在NSTableView中恢复选择(NSWindowRestoration)

cocoa – 在NSTableView中恢复选择(NSWindowRestoration),第1张

概述我正在基于非文档的 Cocoa应用程序中进行窗口恢复.该应用程序具有类似Mail.app的界面.每个窗口代表一个帐户;该窗口中的侧边栏列出该帐户中的会话,主区域列出所选会话中的消息. 这些列表中的每一个都是基于视图的NSTableView.会话列表绑定到NSArrayController,其contentSet绑定到窗口控制器的帐户属性;消息列表绑定到第二个NSArrayController,其c 我正在基于非文档的 Cocoa应用程序中进行窗口恢复.该应用程序具有类似Mail.app的界面.每个窗口代表一个帐户;该窗口中的侧边栏列出该帐户中的会话,主区域列出所选会话中的消息.

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

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

解决方法 如您所知,NStableVIEw不会自动保存选择.

最简单的方法是将NStableVIEw的selectionIndexes绑定到Array Controller的selectionIndexes,并保存/检索NSUserDefaults中的值.然后,您可以将数组控制器的selectionIndexes绑定到共享用户默认值控制器(使用Controller Key值,您可以将模型键路径命名为任何内容).由于需要存档/取消存档NSIndexSet,因此请使用NSKeyedUnarchiveFromData值转换器.这本身就应该有效.

如果你遇到麻烦,就像选择索引重置一样,因为表视图没有立即重新填充(我怀疑你有这些问题,因为你正在填充绑定),你可以手动保存默认值.

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];[defaults setValue:[NSKeyedArchiver archivedDataWithRootObject:self.arrayController.selectionIndexes] valueForKey:vvLastSavedSelectionIndex];

并检索它们:

NSIndexSet *selectionIndexes = [NSKeyedUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] valueForKey:vvLastSavedSelectionIndex]];[self.arrayController setSelectionIndexes:selectionIndexes];
总结

以上是内存溢出为你收集整理的cocoa – 在NSTableView中恢复选择(NSWindowRestoration)全部内容,希望文章能够帮你解决cocoa – 在NSTableView中恢复选择(NSWindowRestoration)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1004822.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-22
下一篇2022-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存