首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在openDocument加载之前拦截NSDocument的结果?

如何在openDocument加载之前拦截NSDocument的结果?
EN

Stack Overflow用户
提问于 2013-08-14 08:36:31
回答 2查看 1.6K关注 0票数 0

我正在编写一个程序来加载和处理XML数据。如果该XML文件包含单个XML“字典”,那么它将需要打开一个NSDocument窗口(到目前为止,非常好--我可以这样做!),但是如果该XML文件包含一个字典数组,那么它应该打开一个列表窗口,从该窗口可以将各个字典打开为一个NSDocument。

因为文件->Open在文档窗口打开之前向First Responder-> openDocument 发送操作,所以我认为openDocument函数不是NSDocument的一部分。因此,我希望能够在打开函数交给NSDocument之前拦截它--只是检查文档是否是我希望作为文档打开的,而不是作为我的natty list视图打开的。

另一方面,如果openDocument是一个NSDocument函数,我如何才能悄悄地关闭NSDocument窗口并将XML传递到列表窗口,而不会在这个场景中引发错误?当然,我不想完全抑制错误,因为可能有合理的理由引发错误(不可读的文件,糟糕的语法等等)。

我意识到我想做的是一些不正统的事情--但希望这是可能的。有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-04 08:21:01

openDocument:是NSDocumentController的实例方法。

_

您可以使用自己的子类对NSDocumentController进行子类。这将允许您拦截openDocument:。

如果要在创建文档之前检查文件,则需要在打开的文件对话框中使用NSOpenPanel。然后,当您想要创建文档时调用openDocumentWithContentsOfURL:display:completionHandler:。如果不想创建文档,则可以触发任何想要执行的操作。

票数 3
EN

Stack Overflow用户

发布于 2016-02-04 11:34:45

只需向应用程序委托添加一个处理openDocument的函数即可。

代码语言:javascript
复制
func openDocument(sender: AnyObject) {
    print("openDocument got called")
}

运行应用程序并按cmd+o

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18226859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档