iOS 侧滑返回至指定控制器

项目中,遇到一个需求,就是返回至指定页,实现思路是直接将当前控制器与目标控制器之间的控制器出栈,代码如下

//在需要侧滑到指定控制器的控制器的 view 加载完毕后偷偷将当前控制器与目标控制器之间的所有控制器出栈
  # 1. 获取当行控制器所有子控制器
  NSMutableArray <UIViewController *>* tmp = self.navigationController.viewControllers.mutableCopy;
  # 2. 获取目标控制器索引
  UIViewController * targetVC = nil;
    for (NSInteger i = 0 ; i < tmp.count; i++) {
        
        UIViewController * vc = tmp[i];
        if ([vc isKindOfClass:NSClassFromString(@"TargetViewController")])
        {
            targetVC = vc;
            // 也可在此直接获取 i 的数值
            break;
        }
    }
  NSInteger index = [tmp indexOfObject:targetVC];
  # 3. 移除目标控制器与当前控制器之间的所有控制器
  NSRange  range = NSMakeRange(index + 1, tmp.count - 1 - (index + 1));
    
  [tmp removeObjectsInRange:range];
  # 4. 重新赋值给导航控制器
  self.navigationController.viewControllers = [tmp copy];

以上方法需要在适当的时机执行,以免不生效

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容