最近遇到一个例子,是导航里push了几个页面,然后要返回到不在导航下的页面,再返回就到跟控制器了。
1.实现思路 点击返回事件使用push将页面压入
2.同时将除了根控制器以外的页面缓存清空,这样就再点击返回的时候就可以返回根控制器 或者返回指定的保留的页面上
3.核心方法 navigationController?.viewControllers.removeRange(Range.init(start: 1, end: (navigationController?.viewControllers.count)!-1))
这边 index 0 是跟控制器不能清除 然后最后一个控制器是要跳转的控制器也不能清除不然跳转不了。
不过可以用通知让前面任何一个页面进行push,前提还是不能清除跳转的页面,然后可以在跳转后进行清除。