三味猪屋

如何设置导航栏返回按钮的事件

说到设置导航栏返回按钮事件,首先想到是设置self.navigationItem.leftBarButtonItem。但是leftBarButtonItem与系统自带的backBarButtonItem在样式和frame是不一样的,特别是APP如果没有从整个框架层去统一导航栏的返回按钮,就会出现有的页面是系统自带的backBarButtonItem,有的页面是程序员设置的leftBarButtonItem,导致界面无一致性。
其实可以通过UINavigationBarDelegate提供的方法来设置我们自定义事件。

我们可以为UINavigatonController创建一个类别(Category)来定制navigationBar: shouldPopItem:的逻辑。由于UINavigatonController自带的 UINavigationBar的delegate就是UINavigatonController本身,所以在创建导航栏的实例时不需要手动去设置delegate。
代码如下:

UIViewController-BackButtonHandler实现如下: