2009-07-30 8 views
0

Je ne peux pas fairePrésentation d'un contrôleur de vue modal seulement après un autre a été rejetée

[myViewController dismissModalViewControllerAnimated:YES]; 
[myViewController presentModalViewController:nextModalViewController animated:YES]; 

l'un après l'autre, parce que les deux blocs d'animation tentent d'affecter les mêmes références simultanément et les choses se mal .

Donc, ce que je dois faire est de faire ce dernier appel seulement après la fin de la première animation. Mais il n'y a pas de méthode UIViewControllerDelegate comme didDismissModalViewController. Que devrais-je faire?

Répondre

2

Quel est le problème avec juste le sous-classement du contrôleur de vue (si vous avez pas déjà) et de faire ceci:

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


    [myViewController presentModalViewController:nextModalViewController animated:YES]; 
} 

Je ne sais pas comment vous gérez vos références aux contrôleurs de vue, mais le point J'essaye de faire est juste attraper le viewDidDisappear pour le contrôleur de vue de modèle qui glisse.

+0

hey, merci pour la suggestion! Cela semble fonctionner. le seul inconvénient est que j'ai dû utiliser performSelectorOnMainThread: withObject: waitUntilDone: même s'il est déjà dans le thread principal, juste pour que toutes les notifications internes déclenchées par le rejet soient effacées avant que le nouvel appel presentModalViewController: animated: recommence à tourner . Sinon, j'obtiens un EXC_BAD_ACCESS. – lawrence

3

Il est un peu hacky (ok, peut-être beaucoup hacky), mais vous pouvez simplement présenter le second après un délai fixe:

[myViewController performSelector:@selector(showSecondModalView) withObject:nil afterDelay:0.5]; 

(ou quelle que soit la durée de l'animation se révèle être).

+0

Je suis d'accord avec cette réponse, vu que cette pomme n'a pas fourni une meilleure solution pour cela – Daniel

+0

Hey, même moi, j'avais un problème similaire, et la solution ci-dessus a fonctionné pour moi .. Merci. J'ai eu une question, comment afficher premier-> deuxième-> encore une fois-> encore une fois deuxième contrôleurs de vue modale? (C'est-à-dire 1ère et 2ème contrôleurs de vue modale l'un après l'autre) – iOSDev

Questions connexes