是否可以弹出UINavigationController两次?

Mar*_*cal 9 uinavigationcontroller ios

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

查看一个---->查看二----->查看三个

我想要完成的是,通过View Three上的一行,直接返回View One.我通过protocol-delegate从三到二完成了它,但是在视图中设置委托一个不起作用并设置两个连续的委托协议都弹出导航控制器,给我错误:嵌套导航控制器活动(或类似的东西) ).

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

Pau*_*l.s 34

有几个流行选项

- (UIViewController *)popViewControllerAnimated:(BOOL)animated
- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated
- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated
Run Code Online (Sandbox Code Playgroud)
  • 第一个弹出顶级控制器.
  • 第二个允许您弹出整个堆栈以到达根目录.
  • 第三个允许你弹出任何你有引用的viewController.您可以使用viewController,self.navigationController.viewControllers然后使用该数组来获取要弹出的特定viewController


Faw*_*sud 13

使用以下代码.您可以使用任何数字而不是-3弹出到不同的级别.

OBJ-C:

ViewController *View = [self.navigationController.viewControllers objectAtIndex:self.navigationController.viewControllers.count-3];
    [self.navigationController popToViewController:View animated:YES];
Run Code Online (Sandbox Code Playgroud)

Swift 3.0*:

let controller = self.navigationController?.viewControllers[(self.navigationController?.viewControllers.count)! - 3]        
self.navigationController?.popToViewController(controller!, animated: true)
Run Code Online (Sandbox Code Playgroud)

  • 更好的答案.! (2认同)

Tos*_*lji 8

你可以试试这个

[self.navigationController popToViewController:[[self.navigationController viewControllers] objectAtIndex:1] animated:YES];
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!!