3

我有一个基于文档的应用程序,它有两种文档类型。第一NSDocument个子类是“主”文档(mainDoc),它的.xib文件是应用程序的主编辑窗口。第二NSDocument类是数据源文件 (dataDoc),其中一组保存在用户的 Application Support 文件夹中,并且打开该组(或子集)以供 mainDoc 窗口使用。可以编辑 dataDoc 文件,这是在他们自己的窗口中从他们自己的 .xib 文件中完成的。

打开 dataDocs 而不创建它们的窗口是直截了当的,openDocumentWithContentsOfURL:display:completionHandler:但是在它们被编辑后保持它们打开(即它们的唯一NSWindowController被关闭)不是。我创建了一个NSWindowController子类,认为这会有所帮助。但是,覆盖并没有帮助,因为如果文档最后关闭(如 Apple 文档中所述),shouldCloseDocument无论我的意愿如何,该文档都会关闭。NSWindowController

如何关闭我的文档窗口但保持文档打开?我错过了什么明显的东西吗?

我想到的一种可能性是将 mainDoc 的窗口控制器添加到所有打开的 dataDocs 的窗口控制器中。这是最好的解决方案吗?它看起来不优雅,需要一些填充物。

另一种可能性是在每次关闭 dataDoc 后重新打开它,但这更不优雅,我认为它是最后的手段。

感谢您的任何帮助!

4

1 回答 1

4

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

于 2014-01-11T10:51:19.100 回答