有没有可能连续弹出导航控制器两次?我有这个导航结构:
视图一 ----> 视图二 ----> 视图三
我想实现的是,通过在视图三中点击一行,在直接返回到视图一。我已经通过协议委托从三到二完成了此操作,但在视图一中设置委托不起作用,并且设置两个连续的委托协议都弹出导航控制器,会给我带来错误:嵌套导航控制器活动(或类似内容)。
任何帮助将不胜感激。提前致谢!
有没有可能连续弹出导航控制器两次?我有这个导航结构:
视图一 ----> 视图二 ----> 视图三
我想实现的是,通过在视图三中点击一行,在直接返回到视图一。我已经通过协议委托从三到二完成了此操作,但在视图一中设置委托不起作用,并且设置两个连续的委托协议都弹出导航控制器,会给我带来错误:嵌套导航控制器活动(或类似内容)。
任何帮助将不胜感激。提前致谢!
有几个弹出选项
- (UIViewController *)popViewControllerAnimated:(BOOL)animated
- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated
- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated
self.navigationController.viewControllers
获取viewController,然后使用数组来获取要弹出到的特定viewController。使用以下代码。您可以使用任何数字代替-3
以弹出到不同级别。
Obj-C:
ViewController *View = [self.navigationController.viewControllers objectAtIndex:self.navigationController.viewControllers.count-3];
[self.navigationController popToViewController:View animated:YES];
Swift 3.0*:
let controller = self.navigationController?.viewControllers[(self.navigationController?.viewControllers.count)! - 3]
self.navigationController?.popToViewController(controller!, animated: true)
[self.navigationController popToViewController:[[self.navigationController viewControllers] objectAtIndex:1] animated:YES];
希望能帮到你!
'self' 在第一次出栈后似乎被释放了
UINavigationController *navigationController = self.navigationController;
[navigationController popViewControllerAnimated:NO];
[navigationController popViewControllerAnimated:YES];