2012-10-22 21 views
6

Używam scenorysów w moim iOS. Pierwszy ekran to ekran logowania. Gdy użytkownik się wyloguje lub się wyloguje, może znajdować się na ekranie w głębokiej hierarchii.Powrót do początkowej serii ujęć ViewController przy wylogowaniu

Na przykład: login widok kontroler => Widok modalne kontroler => zakładka Sterownik bar => Regulator nav => Regulator view => Regulator widok. Chcę przejść całą drogę z najwyższego kontrolera widoku do dolnego.

Edycja: Oto schemat hierarchii Widok: enter image description here

Dzięki!

Odpowiedz

2

to powinno działać przy założeniu wszystko było odkładany na stos nawigacji:

[self.navigationController popToRootViewControllerAnimated:YES]; 
+0

Zaktualizowano diagram, aby pokazać, dlaczego to nie zadziałało. –

+0

ah widzę, ładny schemat. Być może będziesz musiał również użyć NSNotificationCenter, aby opublikować powiadomienie o wylogowaniu. Twój pierwszy kontroler widoku modalnego może nasłuchiwać powiadomienia i odrzucać się, gdy je odbierze. –

5

pisałem kategorię UIViewControllers, który wydaje się działać:

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

Komentarze są mile widziane :)

Powiązane problemy