不在栈中的界面跳转
2018-08-29 本文已影响0人
ForstDragon
1,有时候我们需要跳转到不想关的界面,下面是要跳转的界面不在栈中代码,
//0.拿到所有的VC数组
NSMutableArray *viewControllers = [self.navigationController.viewControllers mutableCopy];
//
for (int i = 0; i < viewControllers.count; i++) {
id temp = viewControllers[i];
if ([temp isKindOfClass:[XXXXViewController class]]) {//找到当前VC
//1,要跳转的VC
YYYYViewController *YYYYVC = [[YYYYViewController alloc]init];
//2.插入到界面栈中,设置为i-1是为了跟popToVC效果相同,
[viewControllers insertObject:YYYYVC atIndex:i - 1];
//3.更新界面栈
[self.navigationController setViewControllers:viewControllers animated:YES];
//4.跳转到指定界面
[self.navigationController popToViewController:YYYYVC animated:YES];
return;
}
}
2,确定要跳转的界面在栈中,可以用下边的代码进行跳转,
for(UIViewController*temp in self.navigationController.viewControllers) {
if([tempisKindOfClass:[YYYYViewController class]]) {
[self.navigationController popToViewController:temp animated:YES];
}
}
3,一级级往下跳,然后返回的时候跳过一个界面返回
你可以在要跳过的那个界面进行跳转这样写代码,
YYYYViewController *YYYYVC = [[YYYYViewController alloc]init];
[self.navigationController pushViewController:YYYYVC animated:YES];
NSMutableArray *navigationArray = [[NSMutableArray alloc] initWithArray: self.navigationController.viewControllers];
[navigationArray removeObjectAtIndex:navigationArray.count - 2];
self.navigationController.viewControllers = navigationArray;
这些只是一些小的代码块,为了好用,把它们整合到一起,希望可以有帮助,