iOS 导航控制器跳转


假设有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 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,303评论 4 61
  • Swift版本点击这里欢迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh阅读 25,660评论 7 249
  • 文丨齐国有个人 我们先从一份档案说起。 姓名:商鞅 性别:男 别称:卫鞅、公孙鞅。姬姓,卫氏,又称卫鞅、公孙鞅(卫...
    齐国有个人工作室阅读 3,193评论 2 20
  • 红葫芦早已褪了颜色,身上零零碎碎爬着蜈蚣似的黑色裂痕,葫芦嘴潺潺地冒着烟。虔诚的妇女站在它前边,一张张纸钱地往葫芦...
    小小七阅读 923评论 10 2
  • 正确的坐姿 依次是下巴和头收回落肩上,两侧肩胛骨向后收缩同时大臂稍微外旋让胸打开 ,同时肩胛骨下沉尽量让锁骨...
    Yel阅读 458评论 0 1