我正在编写一个程序来加载和处理XML数据。如果该XML文件包含单个XML“字典”,那么它将需要打开一个NSDocument窗口(到目前为止,非常好--我可以这样做!),但是如果该XML文件包含一个字典数组,那么它应该打开一个列表窗口,从该窗口可以将各个字典打开为一个NSDocument。
因为文件->Open在文档窗口打开之前向First Responder-> openDocument 发送操作,所以我认为openDocument函数不是NSDocument的一部分。因此,我希望能够在打开函数交给NSDocument之前拦截它--只是检查文档是否是我希望作为文档打开的,而不是作为我的natty list视图打开的。
另一方面,如果openDocument是一个NSDocument函数,我如何才能悄悄地关闭NSDocument窗口并将XML传递到列表窗口,而不会在这个场景中引发错误?当然,我不想完全抑制错误,因为可能有合理的理由引发错误(不可读的文件,糟糕的语法等等)。
我意识到我想做的是一些不正统的事情--但希望这是可能的。有什么想法吗?
发布于 2013-11-04 08:21:01
openDocument:是NSDocumentController的实例方法。
您可以使用自己的子类对NSDocumentController进行子类。这将允许您拦截openDocument:。
如果要在创建文档之前检查文件,则需要在打开的文件对话框中使用NSOpenPanel。然后,当您想要创建文档时调用openDocumentWithContentsOfURL:display:completionHandler:。如果不想创建文档,则可以触发任何想要执行的操作。
发布于 2016-02-04 11:34:45
只需向应用程序委托添加一个处理openDocument的函数即可。
func openDocument(sender: AnyObject) {
print("openDocument got called")
}运行应用程序并按cmd+o
https://stackoverflow.com/questions/18226859
复制相似问题