0
私は、さまざまなコントローラをデフォルトのコントローラに組み込む必要がある小さなアプリケーションを作成するタスクを持っています。すべてのコントローラは1つのストーリーボードに格納されます。サブビューに埋め込まれた正しいリリースのNSViewController
サブビュー
if let id = getControllerId(pageIndex) { // get controller's storyboard id by segmented index
let storyBoard = NSStoryboard(name: "Main", bundle: nil)
let controller = storyBoard.instantiateControllerWithIdentifier(id) as! NSViewController
controller.view.translatesAutoresizingMaskIntoConstraints = false
if self.view.subviews.count > 0 {
let prevView = self.view.subviews[0]
prevView.removeFromSuperview() // here should be releasing previous controller
}
self.view.addSubview(controller.view)
// make all side constraints
let views = ["view": controller.view]
self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("|-(0)-[view]-(0)-|", options: NSLayoutFormatOptions(rawValue: 0), metrics: nil, views: views))
self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-(0)-[view]-(0)-|", options: NSLayoutFormatOptions(rawValue: 0), metrics: nil, views: views))
} else {
NSLog("ERROR: Unable get controller storyboard id for index \(pageIndex)")
}
にコントローラを埋め込むのサンプルコードと私は、組み込みコントローラがviewWillDisappearを実行していないことに気づきました。オブザーバーやその他のものをクリアするには、このイベントが必要です。
サブビューに埋め込まれているコントローラを表示する方法が正しいかどうかはわかりませんが、他の解決策は見つかりませんでした。
私は
https://github.com/avvensis/embeddedviewcontrollers
この状況をテストするためのサンプルプロジェクトは、誰もがこのトラブルで私を助けてもらえ作りますか?
Githubプロジェクトが他のユーザー用に更新されました。ありがとう。 – avvensis