在基于文档的应用程序中打开无标题文件

Posted

技术标签:

【中文标题】在基于文档的应用程序中打开无标题文件【英文标题】:Open untitled file in Document-based app 【发布时间】:2012-10-21 12:09:08 【问题描述】:

我希望我的应用每次启动时都打开新的无标题文档。它在 10.6 中工作,但现在我升级到 10.8,当我使用 Command+W 关闭窗口然后重新启动应用程序时,它不会打开任何窗口。

如何让它在每次应用启动时打开一个新窗口,而不管它之前是如何退出的?

我尝试在应用程序委托的applicationShouldOpenUntitledFile:applicationOpenUntitledFile: 中返回YES,但没有成功。

【问题讨论】:

【参考方案1】:

我不确定自 10.6 以来到底发生了什么变化,但问题是 applicationOpenUntitledFile: 的返回值应该基于您手动打开新窗口是否成功。

在您的applicationOpenUntitledFile: 实现中,您应该自己打开一个带有无标题文档的新窗口。这方面的文档位于NSApplicationDelegate

【讨论】:

【参考方案2】:

基于文档的应用无法打开新的无标题窗口的原因:

Appdelegate 方法返回 false

  func applicationShouldOpenUntitledFile(_ sender: NSApplication) -> Bool 
        return false 
  

其他原因可能是这样的: 未找到恢复窗口 + 其他窗口出现了一些代码 -> 不会创建新文档窗口。 在这种情况下,请致电NSDocumentController.shared.newDocument(self)

【讨论】:

以上是关于在基于文档的应用程序中打开无标题文件的主要内容,如果未能解决你的问题,请参考以下文章

MFC MDI 无打开文档 = 禁用新文件

XML 文件未通过基于文档的 OSX 应用程序打开

在基于 Cocoa 文档的应用程序启动中禁用打开面板

需要很长时间才能打开的基于文档的核心数据应用程序的最佳实践

无功能打开Office保存文件

在没有任何窗口的情况下保持和 NSDocument 打开