我有一个基于文档的应用程序,它有两种文档类型。第一个NSDocument
子类是“主”文档(mainDoc),它的.xib
文件是应用程序的主要编辑窗口。第二个NSDocument
类是一个数据源文件(dataDoc),其中一组保存在用户的Application Support文件夹中,并打开set(或子集)以供mainDoc窗口使用。可以编辑dataDoc文件,这可以在他们自己的窗口中从他们自己的.xib文件中完成。
打开dataDocs而不使用openDocumentWithContentsOfURL:display:completionHandler:
可以直接打开它们,但是在编辑它们之后保持打开状态(即它们唯一的NSWindowController
已关闭)不是。我创建了一个NSWindowController
子类,认为这会有所帮助。但是,覆盖shouldCloseDocument
无效,因为如果文档的最后NSWindowController
已关闭(如Apple文档中所述),则无论我的意愿如何,文档都会关闭。
如何关闭我文档的窗口但保持文档打开?我错过了一些明显的东西吗?
我有一种可能性是将mainDoc的windowcontroller添加到所有open dataDocs的windowcontrollers中。这是最好的解决方案吗?它似乎不够优雅,需要一点点填充。
另一种可能性是每次关闭后重新打开dataDoc,但这更不优雅,我认为这是最后的手段。
感谢您的帮助!
答案 0 :(得分:3)
查看NSDocument文档,对我来说最简单的解决方案似乎是为每个NSDocuments添加一个空的NSWindowController。例如,我尝试使用没有NIB的NSWindowController,当它被要求将其窗口置于前面时,它只是“确定”并且没有做任何事情。