在app delegate中获取主窗口控制器的实例

时间:2014-10-03 23:18:20

标签: xcode macos swift

我知道,对于iOS,您可以从app delegate引用根视图控制器,如下所示:

var rootViewController = self.window!.rootViewController

在针对OS X时,如何从应用代表引用主窗口控制器?我想以这种方式传递一个变量(托管对象上下文),因为我已经读过它是引用moc的一个很好的解决方案。

3 个答案:

答案 0 :(得分:15)

您可以像这样访问NSWindow主的NSWindowController实例:

NSApplication.sharedApplication().mainWindow?.windowController

答案 1 :(得分:0)

!在较早的答案中,如果窗口是隐藏的,则会导致崩溃,因此我建议像这样或使用计算属性来缓存窗口:

var mWindow: NSWindow? = nil
func mainWindowCached() -> NSWindow? {
    if let window = NSApplication.shared.mainWindow {
        self.mWindow = window
    }
    return self.mWindow
}

答案 2 :(得分:-2)

您可以这样访问:

NSApplication.shared().mainWindow?.contentViewController as! YourViewController;