2017-09-20 24 views
0

ストーリーボード(NSまたはUI)を使用してViewControllerを初期化するときは、ストーリーボードへの参照を保持する必要がありますか、それを無視して終了することはできますか?ストーリーボードの初期化と除外

class ViewController: NSViewController { 

    var secondarySB: NSStoryboard? = nil 

    @IBAction 
    func loadAndKeep(_ sender: NSButton) { 
     //keeping a reference 
     secondarySB = NSStoryboard.init(name: NSStoryboard.Name.init(rawValue: "Secondary"), bundle: nil) 
     let vc = secondarySB?.instantiateInitialController() as! Secondary 
     self.view.addSubview(vc.view) 
    } 
    @IBAction 
    func load(_ sender: NSButton) { 
     //ignoring the storyboard after I get the viewcontroller 
     let sb = NSStoryboard.init(name: NSStoryboard.Name.init(rawValue: "Secondary"), bundle: nil) 
     let vc = sb.instantiateInitialController() as! Secondary 
     self.view.addSubview(vc.view) 
    } 
} 
+1

"as"を使用して強制的にキャストしていることに気付きました。これはお勧めではありません代わりに使用する代わりに "として?"何か問題が生じた場合は「vc?.view」を入力してください。 SwiftLintという素晴らしいツールがあります。SwiftLintはそのようなものを捕らえ、ビルドの警告を生成するのに適しています。 – ekscrypto

+0

ストーリーボードの参照を保持する必要はありません –

答えて

1

ストーリーボードへの参照を保持する必要はありませんが、インスタンス化されたビューコントローラーを子ビューコントローラーとして追加する必要があります。

関連する問題