2016-06-21 43 views
0

我試圖在Storyboard內打開NSWindow。 我已經正確實例化了控制器,窗口打開但立即消失。NSWindow在showWindow後自動關閉

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) 
    } 

我會理解這種行爲,如果增值稅將內功能。在這種情況下,ARC會殺死窗口。

在我的樣本中,變異值在func之外,應該保持var不會被ARC殺死。

我的方式有什麼問題? 謝謝!

回答

1

實際上,在您的示例中,您有兩組不同的變量。您的let sb = ...let vc = ...會創建局部變量(具有相同名稱),並且會在函數中使用時覆蓋外部變量。您想刪除let限定符,以便將值賦給函數外部的變量。

如果您同時刪除了let限定符,請打開現在的選項並強制downcast,那麼您的窗口將保持不變。

注意:如果你不再需要你的故事板,你實際上可以刪除var sb...並保留let sb...以便減少一個東西打開。

+0

OMG我覺得很愚蠢。非常感謝你! –