如何访问对象的NSDocument?

时间:2012-07-30 12:10:22

标签: cocoa nsdocument

在向mainmenu.xib添加[NSApp delegate]之后,我可以使用NSObject访问应用程序范围的委托实例,并将对象的名称设置为我的名称appDelegate并将mainmenu.xib委托设置为此对象。

现在,我想要做的是访问对象的文档,即对象“所属”的活动NSDocument。我想这将是一个 doc-doc委托实例。有时[self document]有效,但并非总是如此。有通用的方法吗?

3 个答案:

答案 0 :(得分:6)

无需明确传递引用。您可以通过以下方式从NSViewController访问该文档:

id document = self.view.window.windowController.document;

答案 1 :(得分:1)

[[NSDocumentController sharedDocumentController] currentDocument]怎么样?

但要小心。 请阅读 NSDocumentController currentDocument returning nil

答案 2 :(得分:0)

对于作为文档一部分的任何子窗口,可以很容易地创建一个非常简单的NSViewController子类并将所需信息存储在那里。这些视图控制器在主Document实现中设置,因此很容易传递NSDocument对象的地址。然后,任何实际的子视图都可以由视图控制器控制,该视图控制器是该“管理控制器”的子类。

此解决方案不适用于每个对象,但它确实占用了最大的障碍并解决了我的问题......