2012-10-22 23 views
6

Ich verwende Storyboards in meinem iOS. Der erste Bildschirm ist der Anmeldebildschirm. Wenn sich ein Benutzer abmeldet oder abgemeldet wird, befindet er sich möglicherweise auf einem Bildschirm in einer tiefen Hierarchie.Zurück zum ursprünglichen Storyboard ViewController beim Logout

Zum Beispiel: Login-Ansicht Controller => Modal Ansicht Controller => Tab-Leiste Controller => Nav-Controller => Ansicht Controller => Ansicht Controller. Ich möchte den ganzen Weg zurück vom obersten View-Controller zum unteren gehen.

Edit: Hier ist ein Diagramm der Ansichtshierarchie: enter image description here

Dank!

[self.navigationController popToRootViewControllerAnimated:YES]; 

Antwort

2

sollte dies unter der Annahme, alles funktioniert, wurde auf die Navigationsstapel geschoben

- (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]; 
    } 
} 

Kommentare geschätzt :)

+0

Mit einem Diagramm aktualisiert, um zu zeigen, warum das nicht funktioniert hat. –

+0

ah ich sehe, schönes Diagramm. Möglicherweise müssen Sie NSNotificationCenter auch verwenden, um beim Abmelden eine Benachrichtigung zu senden. Ihr erster Modal-View-Controller könnte auf die Benachrichtigung warten und sich beim Empfang davon abmelden. –

5

ich eine Kategorie für UIViewControllers schrieb, die zu funktionieren scheint:

Verwandte Themen