iOS系统的导航跳转,前往下一个界面,只有一个简单的方法
[self.navigationController pushViewController:tagVC animated:YES];
而返回上个界面,就有很多种情况,面对产品妹子的要求,现整体总结一下,希望可以解决看到同学的问题,帮助同学俘获产品妹子芳心。
//基本返回上一级视图控制器操作
[self.navigationController popViewControllerAnimated:YES];
//返回导航栈根视图操作
[self.navigationController popToRootViewControllerAnimated:YES];
//返回到指定位置视图控制器
[self.navigationController popToViewController:self.navigationController.viewControllers[tagIndex] animated:YES];
***以下为进阶操作***
//如果程序从A界面跳转到B界面,然后从B界面跳转到C界面,产品要求从C界面滑动返回到A界面时,就需要进入C界面之后,偷偷的把B界面从导航栈里移除,并刷新导航栈。
NSMutableArray *vcArr_M = [NSMutableArray arrayWithArray:self.navigationController.viewControllers];
[vcArr_M removeObjectAtIndex:bVCIndex];
[self.navigationController setViewControllers:vcArr_M];
//假如有一个付款成功的界面,从商品详情一步步走过来,中间经历81难,道路曲折,走了几条路线不确定,每条路线走了几步也不确定,而设计要求点击付款成功界面返回按钮必须要直接返回到商品详情界面,可以调用以下方法,直接传入商品详情控制器的类
- (void)backToTagViewControllerClass:(Class)tagClass
{
NSInteger tagIndex = 0;
for (NSInteger i = 0; i < self.navigationController.viewControllers.count; i++) {
id currentVC = self.navigationController.viewControllers[i];
if ([currentVC isMemberOfClass:tagClass]) {
tagIndex = i;
}
}
[self.navigationController popToViewController:self.navigationController.viewControllers[tagIndex] animated:YES];
}