美文网首页
iOS 导航控制器跳转

iOS 导航控制器跳转

作者: iVikings | 来源:发表于2016-04-19 16:48 被阅读599次

假设有A、B、C、D四个导航控制器,A->B->C,最后push到D,但是D 要pop到B,不经过C控制器,因为有手势滑动返回,也需要滑动的时候直接回到B控制器,不需要经过C控制器,这个时候想到从导航控制器的堆栈数组中直接移除C控制器,这样就解决问题了,结果在iOS7上发现一个bug,D pop到B的时候,B控制器的title显示的是C的,这个不知道是不是苹果的bug呢?最后换了一种代码的写法,解决了此问题,代码如下:

/***移除中间的控制器**/
NSMutableArray *viewControllers = [NSMutableArray arrayWithArray:**C控制器**.navigationController.viewControllers];
[currentViewController.navigationController.viewControllers enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
    if([obj isKindOfClass:[**C控制器类名** class]]) {
        [viewControllers removeObject:obj];
    }
}];
[viewControllers addObject:**D控制器**];
[**C控制器**.navigationController setViewControllers:viewControllers animated:YES];
思路: A->B->C->D,然后D->B,在C跳到D的时候,先移除C,然后add D控制器,最后setViewControllers就好了!!!

PS:以上导航控制器跳转思路可以实现导航控制器内部任意跳转问题!!!

相关文章

网友评论

      本文标题:iOS 导航控制器跳转

      本文链接:https://www.haomeiwen.com/subject/mzqzlttx.html