J'écris mon propre SplitViewController à partir de rien (c'est-à-dire en sous-classant UIViewController
et non UISplitViewController
).Codage personnalisé SplitViewController - quand dois-je appeler viewWillAppear, viewDidAppear, etc ...?
Il a deux sous-viewControllers (un pour le panneau de gauche et un pour le panneau droit de détail), auquel j'ai besoin d'envoyer les messages appropriés (viewWillAppear, viewDidAppear, viewWillDisapppear and viewDidDisappear
).
Je transfère déjà ces messages lorsque mon SplitViewController personnalisé les reçoit et que cela fonctionne correctement. Cependant, j'ai du mal à savoir quand les envoyer quand l'un des deux sous-viewcontrollers est remplacé par un nouveau, qui doit également recevoir ces messages. J'ajoute la vue du nouveau UIViewController
correctement mais les messages ne sont pas appelés adéquatement.
Mon approche initiale était de les appeler dans le setter des sous-viewControllers, appelant viewWillDisappear
-UIViewController
sur le point d'être libérés et viewWillAppear
au nouveau UIViewController
ensemble, mais celui-ci est exécutée avant viewDidLoad
et donc je présume est faux.
J'ai également vu que UIView a une méthode didAddSubview:
qui pourrait être utile de savoir quand appeler viewDidAppear
sur le correspondant UIViewController
.
Toute aide serait grandement appréciée!
J'ai aussi remarqué que parfois -viewWillAppear: (ou était-ce -viewWillDisappear) est appelée automatiquement lorsque vous ajoutez/supprimez la vue d'un VC dans la hiérarchie. Certes, cela a été fait plus haut dans la hiérarchie de la vue afin de mettre en œuvre des transitions de vue personnalisées, mais il vaut la peine de garder à l'esprit. De plus, je pense qu'il y a quelque chose appelé UIViewControllerWrapperView ... –
Pour autant que je sache, la base UIViewController ne le fait pas, mais les types hiérarchiques tels que UINavigationController, UITabBarController, etc. vont le faire. –
Merci pour ce David Liu. J'ai également trouvé que surcharger - (void) la sous-vue AddAddubview: (UIView *) dans votre UIView personnalisé peut être très utile afin que le custom UISplitViewController puisse notifier ses sous-UIViewControllers que viewDidAppear. – monchote