Récemment, j'ai rencontré un problème dans mon application où certaines sous-vues que je créais dans la méthode -awakeFromNib
d'une sous-classe de UIViewController disparaissaient de la vue. Après avoir fait quelques recherches, j'ai découvert que le déplacement du code que j'avais mis dans -awakeFromNib
vers -viewDidLoad
résolvait le problème. Il semblerait que -awakeFromNib
ne soit appelé qu'une seule fois lorsque le UIViewController est désarchivé à partir du nib, et que -viewDidLoad
soit appelé chaque fois que la vue est désarchivée.
Alors, quelle est la meilleure pratique? Il semblerait que la méthode -awakeFromNib
de UIViewController ne devrait pas ajouter de vues à la vue, ce genre de choses devrait être fait dans -viewDidLoad
. Est-ce que je comprends bien? Ou suis-je plus confus que je ne le pensais?
6 votes
Souviens-toi, viewDidLoad s'applique uniquement aux CONTRÔLEURS DE VUE, et non aux vues en tant que telles. awakeFromNib s'applique en réalité à "tout" car il fait partie de NSObject. Et souviens-toi, si tu travailles avec une vue, NE lance PAS, par exemple, d'animations dans awakeFromNib car la vue est très probablement en train d'être animée vers sa position, etc.