在没有任何窗口的情况下保持和 NSDocument 打开
Posted
技术标签:
【中文标题】在没有任何窗口的情况下保持和 NSDocument 打开【英文标题】:Keeping and NSDocument open without any windows 【发布时间】:2013-11-11 14:00:55 【问题描述】:我有一个基于文档的应用程序,它有两种文档类型。第一个NSDocument
子类是“主”文档(mainDoc),它的.xib
文件是应用程序的主编辑窗口。第二个NSDocument
类是一个数据源文件(dataDoc),其中一组保存在用户的Application Support 文件夹中,并且打开该组(或子集)以供mainDoc 窗口使用。可以编辑 dataDoc 文件,这是在他们自己的窗口中从他们自己的 .xib 文件中完成的。
使用openDocumentWithContentsOfURL:display:completionHandler:
直接打开dataDocs 而不创建它们的窗口,但是,在它们被编辑后保持它们打开(即它们唯一的NSWindowController
被关闭)不是。我创建了一个NSWindowController
子类,认为这会有所帮助。但是,覆盖 shouldCloseDocument
并没有帮助,因为如果最后一个 NSWindowController
已关闭(如 Apple 文档中所述),无论我的意愿如何,该文档都会关闭。
如何关闭文档的窗口但保持文档打开?我错过了什么明显的东西吗?
我想到的一种可能性是将 mainDoc 的窗口控制器添加到所有打开的 dataDocs 的窗口控制器中。这是最好的解决方案吗?它看起来不优雅,需要一些东西。
另一种可能是每次关闭后重新打开dataDoc,但这更不优雅,我认为这是最后的手段。
感谢您的帮助!
【问题讨论】:
将 mainDoc 的 windowController 添加到其他文档不起作用,因为 NSWindowController 无法在文档之间共享(根据 Apple doc foraddWindowController:
【参考方案1】:
浏览 NSDocument 文档,对我来说最简单的解决方案似乎是为每个 NSDocuments 添加一个空的 NSWindowController。例如,我会尝试拥有一个没有 NIB 的 NSWindowController,当它被要求将其窗口放在前面时,它只是返回“确定”并且没有做任何事情。
【讨论】:
以上是关于在没有任何窗口的情况下保持和 NSDocument 打开的主要内容,如果未能解决你的问题,请参考以下文章
Django - 如何在不刷新页面的情况下保持在同一页面上?
在啥情况下 [NSDocument fileURL] 可以为零?