2016-06-21 10 views
0

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

varsがfuncの内部にある場合、この動作がわかります。この場合、ARCはウィンドウを強制終了します。

私のサンプルでは、​​varsはfuncの外側にあります。これは、varsがARCによって強制終了されないようにする必要があります。

私の方法は間違っていますか? ありがとう!

答えて

1

実際、サンプルには2つの異なる変数セットがあります。 let sb = ...let vc = ...はローカル変数(同じ名前)を作成し、関数で使用するときは外部変数をオーバーライドします。 let修飾子を削除して、関数の外部にある変数に値を割り当てるようにします。

let修飾子をすべて削除し、nowオプションをアンラップしてダウンキャストを強制すると、ウィンドウが停止します。

注:ストーリーボードがもう必要ない場合は、実際にはvar sb...を削除して、let sb...のままにしておきます。

+0

OMG私はとても気まずいです。どうもありがとうございました! –

関連する問題