大家都知道导航控制器中的返回按钮,会返回到上一个页面,但有时项目中有特殊要求,需要返回到指定的页面,我是这么实现的。
1、
首先是监听这个返回按钮的方法,我是通过自定义返回按钮监听的。
// 自定义返回按钮
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"back-1x"] style:(UIBarButtonItemStyleDone) target:self action:@selector(backBtn)];
2、
然后遍历导航控制器中的控制器,当遍历到需要返回到指定页面的控制器时候,直接break,重新添加到导航控制器中,就是这个思路,下面贴上代码。
#pragma mark - 点击返回按钮,回到指定页面
- (void)backBtn
{
UINavigationController *navigationVC = self.navigationController;
NSMutableArray *viewControllers = [[NSMutableArray alloc] init];
//遍历导航控制器中的控制器
for (UIViewController *vc in navigationVC.viewControllers) {
[viewControllers addObject:vc];
// CourseTableController就是你需要返回到指定的控制器名称,这里我需要跳转到CourseTableController这个控制器
if ([vc isKindOfClass:[CourseTableController class]]) {
break;
}
}
// 把控制器重新添加到导航控制器
[navigationVC setViewControllers:viewControllers animated:YES];
[navigationVC popViewControllerAnimated:YES];
}