NSWindow会在showWindow后自动关闭

时间:2016-06-21 19:35:26

标签: xcode swift cocoa storyboard nswindow

我正试图在故事板中打开NSWindow。 我已正确实例化控制器,窗口打开但立即消失。

   var sb : NSStoryboard?
   var vc : NSWindowController?
   @IBAction func openWindow(sender: AnyObject) {
        let sb = NSStoryboard(name: "NewStoryBoard", bundle: nil)
        let vc = sb.instantiateControllerWithIdentifier("windowController")
        vc.showWindow(nil)
   }

如果变量将在func中,我会理解这种行为。在这种情况下,ARC会杀死窗口。

在我的样本中,vars位于func之外,这样可以防止vars杀死vars。

我的方式出了什么问题? 谢谢!

1 个答案:

答案 0 :(得分:1)

实际上,在您的示例中,您有两组不同的变量。您的let sb = ...let vc = ...创建局部变量(具有相同的名称),并在函数中使用时覆盖外部变量。您希望删除let限定符,以便将值分配给函数外部的变量。

如果同时删除let个限定符,解包现在的选项,并强制向下转换,那么你的窗口就会保持不变。

注意:如果您不再需要故事板,则可以实际删除var sb...并保留let sb...,以便少量打开包装。