iOS开发: 手势pop返回时, 跳过中间的控制器, 直接显示指
作者:
伯wen | 来源:发表于
2018-08-14 13:50 被阅读29次
- 效果: 点击返回按钮pop 和 手势滑动pop时, 都会跳过中间的控制器

点击返回按钮pop 和 手势滑动pop时, 都会直接回到指定控制器
- 开发时, 会有这样一种需求: push到某个界面后, pop返回时, 过滤掉某些界面, 直接返回到指定界面
- 这种情况下, 一般可以使用
UINavigationController
的popToViewController: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返回时, 跳过中间的控制器, 直接显示指
本文链接:https://www.haomeiwen.com/subject/rjtvbftx.html
网友评论