2012-10-22 37 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]; 
    } 
} 

评论被感激:)

相关问题