【问题标题】:Lion Resume when Closing Docs without Quitting AppLion 在不退出应用程序的情况下关闭文档时恢复
【发布时间】:2011-09-29 08:27:55
【问题描述】:

我第一次将脚浸入可可。

这是一个简单的问题。 OS X Lion 支持在应用程序终止和重新启动时恢复窗口状态。好的,很好。

但是对于基于文档的应用程序,相同恢复功能是否也可以在文档关闭并稍后重新打开时管理窗口状态的保存但没有任何退出应用程序? (也就是说,不管应用程序是否退出,它是否可以持久地管理每个文件的状态?或者我必须通过将信息保存在文档文件中来自己管理它?)

例如,iWork '09 应用程序做这样的事情:如果您关闭保存的文档并重新打开它,它将恢复窗口大小、位置和滚动条位置。我知道它是否使用 Lion's Resume 本身来做到这一点。

但是,相比之下,OS X Lion 的 TextEdit 会在退出并重新启动时恢复窗口,但 它不会记住当您关闭文档并重新打开它时的窗口状态。这让我怀疑在不退出的情况下使用 Resume 可能无法自动执行(因为 Pages 可能会将窗口状态保持在其专有文件格式中,但 TextEdit 不会,因为它使用纯文本、RTF、HTML 等文件)。


我还没有访问 WWDC 2011 视频的权限,OS X 发行说明、OS X 应用程序编程指南和 NSWindowRestoration API 文档都没有专门讨论这一点。

那么问题又来了:在关闭并重新打开文档窗口后自动记住它的状态而不退出应用程序(就像 iWork 一样)...Lion's Restore 支持这个吗?

非常感谢!

【问题讨论】:

  • Lion 为您提供了自动保存状态的工具(检查 application:willEncodeRestorableState: 和 NSDocument 的 encodeRestorableStateWithCoder:),但您可以选择要保存的方式和状态。

标签: macos cocoa osx-lion restore document-based


【解决方案1】:

但是对于基于文档的应用程序,相同的恢复功能是否还可以在文档关闭并稍后重新打开但不退出应用程序时管理窗口状态的保存? (也就是说,不管应用程序是否退出,它是否可以持久地管理每个文件的状态?

不是没有帮助,不是。

还是我必须通过将信息保存在文档文件中来自己管理?)

或者其他地方,是的。

我未经测试的建议是尝试自己使用窗口恢复协议。关闭时,给自己发送encodeRestorableStateWithCoder:,然后将该数据存储在您的文档中(或任何您想要的地方)。打开文档时,如果有可恢复的状态信息,请传递给restoreStateWithCoder:

【讨论】:

    猜你喜欢
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 2021-10-27
    • 2017-04-28
    相关资源
    最近更新 更多