0
我有一個任務來編寫一個小應用程序,其中各種控制器必須嵌入到默認控制器中。所有控制器都存儲在一個故事板中。嵌入控制器的子視圖正確版本嵌入在子視圖中的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