2012-04-18 7 views
6

Ho tre viewControllerIOS: respingere due viewController

Primo, Secondo e Terzo

da Second aprire Terzo utilizzare

Third *third = [[Third alloc]initWithNibName:@"Third" bundle:nil]; 
[self presentModalViewController:third animated:YES]; 
[third release]; 

Ora voglio tornare dal terzo al primo; poi ho impostato in viewDidAppear in seconda di questo codice:

[self dismissModalViewControllerAnimated:NO]; 

ma per 1 secondo vedo Secondo e non voglio guardarlo ... come posso fare?

+1

come viene aggiunta la seconda vista alla prima vista? –

risposta

15

È necessario chiudere prima il controller della terza vista e poi il secondo Viewcontroller. Esegui il seguente codice quando vuoi andare al primo controllo della vista.

-(void)goToFirstView{ 
     UIViewController *vc = [self parentViewController]; 
    //  UIViewController *vc = [self presentingViewController]; //ios 5 or later 
     [self dismissModalViewControllerAnimated:NO]; 
     [vc dismissModalViewControllerAnimated:YES]; 
} 
4

In che modo viene respinta la terza vista modale? Forse l'utente tocca un pulsante 'Fatto'? Se è così, è nel gestore del pulsante che vuoi eliminare entrambi.

Si può respingere sia come:

[self dismissModalViewControllerAnimated: YES]; 
[self.presentingViewController dismissModalViewControllerAnimated: NO]; 
+0

Penso che i parametri ** animati ** dovrebbero essere NO allora SÌ, vedere la risposta di rakeshNS – onmyway133

0

Questo accade coz viewDidAppear è chiamato ogni volta prima che la vista appare quindi non appena appare di respingere e scompare ..

non lo faccio puoi pensare a quello che stai cercando di fare con modalViewControllers ... usa invece un navigationController e continua ad aggiungere i tuoi viewcontrollers nello stack e quando vuoi andare al primo controller di visualizzazione chiama semplicemente

[self.navigationController popToRootViewControllerAnimated:YES];  

EDIT:

solo pensato questo può essere raggiunto utilizzando la delega .. si effettua secondo il delegato del terzo e, non appena si liquidano la thirdviecontroller inviare il delegato un message.In questo messaggio di chiamata [self dismissModalViewControllerAnimated:NO];. e il gioco è fatto .. (abbastanza facile se si conosce la delega.)