这个问题属于自己没有仔细考虑viewController生命周期引起的。
在viewDidLoad里添加代码:
self.navigationController.interactivePopGestureRecognizer.delegate = (id)self;
如果只有两级页面,在二级页面添加这个设置,这样右滑返回是没问题的。
但是当含有三级或者三级以上页面时,我们在除了一级页面之外的其他页面都添加这个代码,会发现只有最后一级能右滑返回,其他页面都失效了。
这是因为:
当栈顶viewController
被Pop出栈时self被销毁,即delegate被置为nil,因为其他viewController的viewDidLoad这时候不执行,代理方法自然也不会执行,因此导致其他页面右滑返回失效。
解决办法:将以上代理设置转移到viewWillAppear方法中。
以后开发要非常重视生命周期这个东西。
网友评论