En supposant que je charge un contrôleur de vue à partir d'une plume, et décide de faire quelque chose avec une de ses sous-vue derrière la scène. Plus tard dans le temps, je montrerais la vue de ce contrôleur de vue.Créer une vue (initialisée à partir de initWithNibName) charger toute sa sous-vue
viewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
[viewController.someSubview doSomething];
//later on
[mainView addSubview:viewController.view];
Le problème est que, l'objet someSubview ne semble pas être chargé jusqu'à ce que la vue apparaît, la méthode doSomething est pas appelé. Jusqu'à présent, ma solution de contournement consiste à appeler:
[mainView addSubview:viewController.view];
[viewController.view removeFromSuperview];
pour initialiser les sous-vues de viewcontroller en premier. Existe-t-il un moyen plus élégant (comme une méthode loadSubviews ou quelque chose) pour cette tâche?
Merci, qui l'a fait. – iamj4de
@MarkAmery Apple vous dit explicitement de ne pas appeler -loadView dans la documentation: "Vous ne devez jamais appeler cette méthode directement.Le contrôleur de vue appelle cette méthode lorsque sa propriété view est demandée mais est actuellement nulle Cette méthode charge ou crée une vue et l'affecte à la propriété view. " –
@MikeWeller Bon point - je n'avais pas assez regardé la documentation pour le savoir. Je suppose que nous devons choisir entre un des deux hacks un peu moche, alors. Pour ma part, je vais probablement m'en tenir à 'loadView' juste parce que c'est plus explicite, mais je concède que ce n'est pas la solution propre que je pensais que c'était. –