保持和NSDocument打开没有任何窗口

时间:2013-11-11 14:00:56

标签: macos cocoa nsdocument nswindowcontroller

我有一个基于文档的应用程序,它有两种文档类型。第一个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,但这更不优雅,我认为这是最后的手段。

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

查看NSDocument文档,对我来说最简单的解决方案似乎是为每个NSDocuments添加一个空的NSWindowController。例如,我尝试使用没有NIB的NSWindowController,当它被要求将其窗口置于前面时,它只是“确定”并且没有做任何事情。