【问题标题】:How to automatically create new NSDocument if no documents are restored?如果没有恢复文档,如何自动创建新的 NSDocument?
【发布时间】:2012-11-15 16:30:52
【问题描述】:

编辑:似乎只有当我在 Xcode(我在 4.4 上)而不是从 Finder 中运行时,才会出现以下问题(而是没有发生...... :)。这是 Xcode 的错误,还是我遗漏了什么?

我想在应用启动时创建一个新的(未命名的)NSDocument,以防没有文档自动恢复。 TextEdit 和 Safari 都显示我想要的行为,所以看起来这应该是内置的,但我找不到任何选项。

重现我的问题的步骤:如果我在 Xcode 中创建一个新的基于文档的应用程序并运行它,它第一次运行时确实会创建一个无标题的文档。但是,如果我关闭该文档,退出应用程序并再次运行它,它不会给我一个新文档,除非我明确单击 Dock 中的应用程序图标。这与例如不同。 TextEdit,如果你退出并重新启动,你会得到一个新的空文档。 (正如预期的那样,更改包标识符会给我另一个新的无标题文档。)

我的第一个想法是,这可能应该发生在applicationDidFinishLaunching:,但事实证明,该方法是在恢复任何以前打开的文档之前执行的。

【问题讨论】:

    标签: xcode cocoa nsdocument nsapplication nsapplication-delegate


    【解决方案1】:

    此行为是文档架构的一部分。您的应用程序委托应实现协议NSApplicationDelegate

    的以下方法
    - (BOOL)applicationShouldOpenUntitledFile:(NSApplication *)sender;
    {
        return YES;
    }
    

    你可以找到更多关于这个here的信息。

    【讨论】:

    • 正如我在编辑中所说的,该问题仅在从 Xcode 运行时出现。 applicationShouldOpenUntitledFile: 已经完全按照您的建议实施。
    • @justink。啊,好吧……现在我明白了。好的第一个反馈我可以在 MacOS 10.8 上重现它。但仅当 applicationShouldTerminateAfterLastWindowClosed 返回 NO
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-21
    • 1970-01-01
    • 1970-01-01
    • 2020-03-03
    • 1970-01-01
    • 2017-05-06
    • 2013-07-27
    相关资源
    最近更新 更多