界面右滑返回interactivePopGestureRecognizer代理失效问题

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

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

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

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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容