界面右滑返回interactivePopGestureRecog

2016-12-20  本文已影响27人  逐水而上

这个问题属于自己没有仔细考虑viewController生命周期引起的。
在viewDidLoad里添加代码:

self.navigationController.interactivePopGestureRecognizer.delegate = (id)self;

如果只有两级页面,在二级页面添加这个设置,这样右滑返回是没问题的。
但是当含有三级或者三级以上页面时,我们在除了一级页面之外的其他页面都添加这个代码,会发现只有最后一级能右滑返回,其他页面都失效了。

这是因为:
当栈顶viewController被Pop出栈时self被销毁,即delegate被置为nil,因为其他viewController的viewDidLoad这时候不执行,代理方法自然也不会执行,因此导致其他页面右滑返回失效。

解决办法:将以上代理设置转移到viewWillAppear方法中。

以后开发要非常重视生命周期这个东西。

上一篇 下一篇

猜你喜欢

热点阅读