Je dois écrire une petite application dans laquelle différents contrôleurs doivent être intégrés dans le contrôleur par défaut. Tous les contrôleurs stockés dans un storyboard.Version correcte NSViewController intégré dans les sous-vues
Exemple de code des contrôleurs Enfouissement dans subviews
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)")
}
et je remarquai que le contrôleur embarqué n'exécute pas viewWillDisappear. J'ai besoin de cet événement pour nettoyer les observateurs et d'autres choses.
Je ne suis pas sûr qu'il soit correct de montrer les contrôleurs comme intégrés dans les sous-vues, mais je n'ai trouvé aucune autre solution.
Je fais exemple de projet pour tester cette situation
https://github.com/avvensis/embeddedviewcontrollers
Quelqu'un pourrait me aider avec ce trouble?
Le projet Github a été mis à jour pour les autres utilisateurs. Merci. – avvensis