2012-10-22 40 views
6

我在iOS中使用故事板。第一個屏幕是登錄屏幕。當用戶註銷或註銷時,他可能在深層次的屏幕上。在退出時返回到初始故事板ViewController

例如:登錄視圖控制器=>模式視圖控制器=>標籤欄控制器=>導航控制器=>視圖控制器=>視圖控制器。我想從最頂層的視圖控制器回到最底層的視圖控制器。

編輯:這裏是視圖層次結構的示意圖:enter image description here

謝謝!

回答

2

這應該假定一切都推到導航堆棧:

[self.navigationController popToRootViewControllerAnimated:YES]; 
+0

用圖表更新以說明爲什麼沒有奏效。 –

+0

啊我看,很好的圖。您可能還必須使用NSNotificationCenter在註銷時發佈通知。您的第一個模式視圖控制器可以監聽通知,並在收到通知時自行解除。 –

5

我寫了UIViewControllers一個類別,這似乎是工作:

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

評論被感激:)

相關問題