直接上代码
- (void)backToRootViewController{
UIViewController* vc = [MainViewController instance].navigationController.visibleViewController;
if ([vc isEqual:[MainViewController instance]]) return;
if (vc.presentingViewController) {
[vc dismissViewControllerAnimated:NO completion:^{
[self backToRootViewController];
}];
}
else{
[vc.navigationController popViewControllerAnimated:NO];
[self backToRootViewController];
}
}
上面的代码需要一个根控制器的实例对象,原理是迭代弹出栈顶控制器,直到返回根控制器为止,这里不显示动画。如果需要显示动画,需使用CATransaction来控制popViewControllerAnimated动画结束再再次执行调用,不然肯定会出错。个人觉得也没有必要,谁也不想返回到主页面可能会花掉数秒钟。
GOOD LUCK!
时间: 2024-10-07 21:21:13