美文网首页iOS开发
iOS开发: 手势pop返回时, 跳过中间的控制器, 直接显示指

iOS开发: 手势pop返回时, 跳过中间的控制器, 直接显示指

作者: 伯wen | 来源:发表于2018-08-14 13:50 被阅读29次
  • 效果: 点击返回按钮pop 和 手势滑动pop时, 都会跳过中间的控制器
点击返回按钮pop 和 手势滑动pop时, 都会直接回到指定控制器
  • 开发时, 会有这样一种需求: push到某个界面后, pop返回时, 过滤掉某些界面, 直接返回到指定界面
  • 这种情况下, 一般可以使用UINavigationControllerpopToViewController:animated:方法实现, 比如下图:
pop返回到指定界面
  • 但是在使用右滑手势返回时, 就没办法直接跳到指定界面, 而是返回上一个界面:
手势滑动返回
  • 为了解决这个问题, 可以使用下面的方法

解决思路

  • 首先: 在push到指定界面后, 获取导航控制器的所有子控制器childViewControllers
  • 然后: 创建一个childViewControllers对应的可变数组
  • 接着: 移除可变数组中, 需要过滤的控制器
  • 最后: 使用KVC, 修改导航控制器的childViewControllers属性值为上面的可变数组
  • 具体代码如下:
NSMutableArray *childViewControllers = [NSMutableArray arrayWithArray:self.navigationController.childViewControllers];
[childViewControllers removeObjectAtIndex:childViewControllers.count - 2];
[self.navigationController setValue:childViewControllers forKeyPath:@"childViewControllers"];
  • 这里移除了前一个子控制器, 被移除的控制器会从内存中释放, 不会导致内存泄漏
  • 最终效果如下: 点击返回按钮和手势滑动返回, 都会直接过滤前一个控制器
pop返回过滤前一个控制器

相关文章

  • iOS开发: 手势pop返回时, 跳过中间的控制器, 直接显示指

    效果: 点击返回按钮pop 和 手势滑动pop时, 都会跳过中间的控制器 开发时, 会有这样一种需求: push到...

  • iOS 手势返回

    iOS 手势返回 BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势主流App...

  • iOS 全屏返回

    iOS 全屏返回 BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势主流App...

  • iOS 全屏手势返回

    BBGestureBack BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势...

  • iOS 右滑返回

    BBGestureBack BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势...

  • BBGestureBack 手势返回

    BBGestureBack BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势...

  • iOS 右滑返回

    iOS 右滑返回 BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势主流App...

  • iOS 侧滑返回

    iOS 侧滑返回 BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势主流App...

  • iOS 侧滑返回详解

    iOS 侧滑返回详解 BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势主流A...

  • iOS 侧滑返回详解

    iOS 侧滑返回 BBGestureBack iOS 全屏手势返回 滑动返回 pop 动画效果 这种手势主流App...

网友评论

    本文标题:iOS开发: 手势pop返回时, 跳过中间的控制器, 直接显示指

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