2010-09-29 10 views
4

Un UIViewController (vue A) invoque un autre contrôleur de vue (vue B) en l'appelant comme contrôle modal.ViewDidAppear de UIViewController n'est pas appelé après une fermeture modale

[self presentModalViewController: ViewB animé: TRUE];

Et View B existe en invoquant:

[auto dismissModalViewControllerAnimated: TRUE]; Lorsque cela se produit, tout semble correct sauf que ViewAll viewWillAppear et viewDidAppear ne sont pas appelés (ils sont appelés pendant l'application init). Chose étrange est ... je crois que je l'ai fait avant, mais je ne suis pas sûr de ce qui se passe maintenant.

Y at-il quelque chose qui ne va pas? Merci!

* MISE À JOUR * Je viens d'apprendre que ce problème se produit uniquement avec le type de transition UIModalTransitionStylePartialCurl. Pour tous les autres types de transition, le contrôleur de vue parent obtient son message viewDidAppear très bien.

Alors, qu'est-ce que je suis supposé faire!?!

+0

en double? http://stackoverflow.com/questions/989680/how-to-know-when-dismissmodalviewcontrolleranimated-is-initiated-and-also-when-it –

+1

Pas tout à fait. C'est une question spécifique liée à la transition UIModalTransitionStylePartialCurl. Les délégués ne sont pas appelés pour ce type de transition spécifique. Tous les autres fonctionnent très bien. BUG peut-être ??? – AlvinfromDiaspar

Répondre

2

Je viens de rencontrer le même problème. J'ai résolu le problème en ajoutant un délégué et une méthode déléguée. Par conséquent, lorsque le contrôleur A ouvre le contrôleur B en tant que contrôleur de vue modale avec un curl de page, l'instance du contrôleur b's.delegate est définie comme contrôleur a.

Dans le contrôleur B i ajouter ceci:

-(void) viewWillDisappear:(BOOL)animated { 
    [super viewWillDisappear:animated]; 

    if (delegate) 
     [delegate didCloseInfoViewController]; 
} 
Questions connexes