viewWillAppear pas invoquée pour de la sous-vue contrôleur
J'ai une étrange affaire-une-vue-contrôleur qui crée son propre point de vue dans loadView
et qui est ensuite ajoutée à une vue existante.
Voici le code qui crée et ajoute le VC:
self.doneButtonViewController = [[DoneButtonViewController alloc] init];
[self.view addSubview:self.doneButtonViewController.view];
Ce code est exécuté dans viewDidLoad
de "parent" VC.
La chose étrange est que la viewWillAppear
méthode de la valeur ajoutée de VC est jamais appelé ni viewDidAppear
), mais le viewWillDisappear
méthode de la valeur ajoutée de VC est invoqué (le cas échéant), tout comme on pourrait s'y attendre.
Aucune idée de pourquoi viewWillAppear
n'est pas chargé?
(FWIW, cet exercice est purement pour obtenir le viewWillAppear/viewWillDisappear comportement de la sous-vue, pour mettre en œuvre un relativement "propre" bouton TERMINÉ pour le pavé numérique.)
OriginalL'auteur Hot Licks | 2012-11-27
Vous devez vous connecter pour publier un commentaire.
L'application n'est pas au courant de la sous-vue avis du contrôleur si vous faites cela, vous avez besoin d'introduire de-vue-contrôleur de confinement pour faire de la vue racine contrôleur de courant. Cela permettra de gérer les événements de ce genre.
Parce que
loadView
pourrait être appelé plus d'une fois avant iOS 6, je vous conseille de créer la vue de contrôleur au seininit
, puis ajouter la sous-vue dansloadView
. Il devrait ressembler à ceci:Voir "mise en Œuvre d'un Conteneur View Controller" à http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html
Le problème est, je suis en train d'essayer de venir avec un minimum de schéma pour l'ajout de cette -- en gros invoquer une usine méthode qui crée le VC et ajoute de la vue.
Vous auriez à passer dans une référence à la vue du contrôleur, il est ajouté à de la, et utiliser le même processus. Si vous vous inquiétez de ce qui peut arriver plus d'une fois, alors le code de vérification à l'intérieur de l'usine, de ne pas ajouter de doublons, ou ont
removeFromParentViewController:
à la main si vous avez besoin de l'enlever.J'avais essayé addChildViewController, mais je ne savais pas que j'avais besoin de addSubview. Avec la paire qu'il fonctionne plus ou moins comme prévu.
Tous les addChildViewController n'est de créer un lien entre les deux vue. contrôleurs, il n'est rien de ce qui concerne les vues elles-mêmes. Ce lien vous permet d'événements, tels que viewWillAppear: pour être propagées vers le bas à l'enfant de voir les contrôleurs, donc, à leur tour, ils peuvent gérer leur propre point de vue. La réelle ajoutant des points de vue eux-mêmes doivent être ajoutés de façon traditionnelle.
OriginalL'auteur WDUK
Comme pour moi, l'ajout de l'enfant-vue-contrôleur en vue parent contrôleur peut résoudre le problème "viewWillAppear" de l'enfant-vue-contrôleur pas appelé.
OriginalL'auteur user1806228