使用故事板在 AppDelegate 中引用主要 NSWindow?

Reference main NSWindow in AppDelegate using Storyboard?

我试图在我的 App Delegate 中为我的应用程序的主要 window 设置一个插座,然后在 Interface Builder 中连接它。我很容易在我的 App Delegate 中创建出口:

@IBOutlet weak var mainWindow: NSWindow!

但是,在界面生成器中,我无法将引用插座连接到 App Delegate。相反,我只能将它连接到 Window 控制器,我希望这张图片显示:

第一个对象是 Window Controller,第二个对象是 First Responder,但是缺少 App Delegate 对象。菜单栏有 App Delegate 对象:

而且我可以将菜单栏中的任何内容连接到 App Delegate 中的任何插座。

我想我可以使用以下方法访问 window 对象:

NSApp.windows[0]

但这似乎容易出错,尤其是如果我有多个 window。

我不知道这样做是否正确,但这会解决您的问题。

在 AppDelegate

中添加一个 NSWindow 属性
weak var window: NSWindow!

并在 NSWindowController

windowWillLoad 中设置 属性
(NSApplication.sharedApplication().delegate as! AppDelegate).window = self.window

您必须继承 NSWindowController 来定义 windowWillLoad