2012-10-22 22 views
6

Sto usando gli storyboard nel mio iOS. La prima schermata è la schermata di accesso. Quando un utente si disconnette o viene disconnesso, potrebbe trovarsi su una schermata in una gerarchia profonda.Ritorno allo storyboard iniziale ViewController al logout

Ad esempio: login view controller => modal view controller => tabulatore controller => nav controller => visualizza controller => visualizza controller. Voglio tornare indietro dal controller vista più in alto a quello in basso.

Edit: Ecco un diagramma della gerarchia della vista: enter image description here

Grazie!

risposta

2

questo dovrebbe funzionare supponendo che tutto è stato inserito nello stack di navigazione:

[self.navigationController popToRootViewControllerAnimated:YES]; 
+0

Aggiornato con un diagramma per mostrare perché non ha funzionato. –

+0

ah vedo, bel diagramma. Potrebbe essere necessario utilizzare NSNotificationCenter anche per pubblicare una notifica al logout. Il tuo primo controller di visualizzazione modale potrebbe ascoltare la notifica e chiudersi quando lo riceve. –

5

ho scritto una categoria per UIViewControllers che sembra funzionare:

- (void) popToInitialViewController 
{ 
    UIViewController *vc; 
    if (self.navigationController != nil) { 
     vc = self.navigationController; 
     [self.navigationController popToRootViewControllerAnimated:NO]; 
     [vc popToInitialViewController]; 
    } 
    else if (self.tabBarController != nil) { 
     vc = self.tabBarController; 
     [vc popToInitialViewController]; 
    } 
    else if (self.presentingViewController != nil) { 
     vc = self; 

     while (vc.presentingViewController != nil) 
      vc = vc.presentingViewController; 

     [vc dismissModalViewControllerAnimated:NO]; 

     [vc popToInitialViewController]; 
    } 
} 

commenti sono apprezzati :)

Problemi correlati