iOS 导航栏-返回按钮-自定义
在开发过程中,我们经常遇到使用系统导航栏的功能,如何更改返回按钮的样式呢?
重写返回按钮一般是添加leftBarButtonItems。如果导航栏添加了leftBarButtonItems之后,会自动隐藏返回按钮backBarButtonItem。
当我们使用了系统的导航栏时,默认点击返回按钮是 pop 回上一个界面。但是在有时候,我们需要在点击导航栏的返回按钮时不一定要 pop 回上一界面,可能是其他的页面,我们需要拦截返回按钮的pop操作。
1、重写返回按钮
具体操作查看上面“二、重写返回按钮”。
缺点 :若重写了某个界面的返回按钮,感觉应用整体就不统一了。而且每有一个界面有这个需求都需要重新自定义一个返回按钮,显得不优雅,工作繁琐。
2、为 UINavigationController 添加 category
我们可以为 UINavigatonController 创建一个 Category,来定制navigationBar: shouldPopItem: 的逻辑。
使用时,只需要在需要拦截返回按钮事件的控制器中,应用#import "UIViewController+BackButtonHandler.h",并重写-(BOOL)navigationShouldPopOnBackButton方法即可。