可以在App Delegate中使用IBOutlet来访问文档窗口吗?

时间:2015-02-17 20:24:32

标签: objective-c xcode macos cocoa

如果这很明显,请原谅我,但我对Cocoa和Objective-C都很陌生。

我有一个非常简单的文本编辑器应用程序,它有两个使用Interface Builder创建的窗口。一个用于文本内容,另一个窗口具有各种控件和"输入全屏"按钮。

我在App Delegate中定义了一个名为myWindow的IBOutlet,链接到文本编辑器窗口。我用:

[self.myWindow togglefullscreen]

在App Delegate中进入全屏模式"进入全屏"按钮在另一个窗口按下。

现在,我正在尝试将我的应用程序转换为基于文档的应用程序。

我的问题是:如何访问当前的文档窗口,以便从App Delegate中调用togglefullscreen?这甚至可能/优雅吗?

接口构建器不允许我将App Delegate中的IBOutlet连接到Document.xib中的Document窗口,我认为它有意义,因为它可能有多个实例。

另一个问题源于此问题,如果这个全屏幕功能应该在Document类中实现,并且应该是"全屏幕"按钮位于文档窗口本身(因为只有一个文档将是全屏)?

我们非常感谢任何想法: - )

约翰

1 个答案:

答案 0 :(得分:0)

NSDocument(子类)可以有多个与之关联的窗口。您的NSDocument子类可以访问NSDocument的windowControllers属性以获取一个窗口控制器的NSArray(IIRC返回到前面的顺序),并询问每个子窗口的相关窗口(属性)。