不在栈中的界面跳转

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;

这些只是一些小的代码块,为了好用,把它们整合到一起,希望可以有帮助,

上一篇 下一篇

猜你喜欢

热点阅读