2012-05-30 76 views
8

是否可以两次弹出导航控制器?我有这样的导航结构:是否可以两次弹出UINavigationController?

景一---->查看两----->景三

我想什么来完成是由一排的上景三水龙头,直接返回到View One。我通过协议委托完成了三到两个,但在视图中设置委托一个不工作,并设置两个连续的委托协议都弹出导航控制器,给我错误:嵌套的导航控制器活动(或类似的东西)。

任何帮助,将不胜感激。提前致谢!

回答

32

有几个流行的选择

- (UIViewController *)popViewControllerAnimated:(BOOL)animated 
- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated 
- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated 
  • 第一个弹出顶部控制器。
  • 第二个允许你弹出整个堆栈到达根目录。
  • 第三个允许你弹出到你有参考的任何viewController。你可以用self.navigationController.viewControllers得到的viewController,然后与阵列工作,以得到你想要的弹出来
+1

谢谢,作品像魅力! – Marcal

4

“自我”的具体的viewController似乎第一个弹出之后被释放

UINavigationController *navigationController = self.navigationController; 
[navigationController popViewControllerAnimated:NO]; 
[navigationController popViewControllerAnimated:YES]; 
10

使用下面的代码。根据您的需求,您可以使用任何数字而不是-3来弹出。

的代码:

ViewController *View = [self.navigationController.viewControllers objectAtIndex:self.navigationController.viewControllers.count-3]; 
    [self.navigationController popToViewController:View animated:YES]; 

夫特3.0 *

令控制器= self.navigationController .viewControllers [(self.navigationController .viewControllers.count?)! - 3]

 self.navigationController?.popToViewController(controller!, animated: true) 
+2

更好的答案。 ! – Xeieshan

8

你可以试试这个

[self.navigationController popToViewController:[[self.navigationController viewControllers] objectAtIndex:1] animated:YES]; 

希望它帮助!

相关问题