谈一谈拦截导航控制器返回事件(上)——OPP

本文探讨了在iOS中如何利用面向对象编程(OPP)思想拦截UINavigationController的返回事件。通过创建自定义的CustomizedNavigationController并重写其行为,为所有push进来的控制器设置统一的返回按钮。当需要拦截返回事件时,子类可以实现viewControllerShouldPop方法,返回true以执行pop操作,返回false则不执行。然而,这种方式存在局限性,如必须使用自定义导航控制器和子类必须继承特定基类。为解决这些问题,文章预告将引入AOP(面向切面编程)作为替代方案。
摘要由CSDN通过智能技术生成

iOS中,UINavigationController 是一个很好用的导航栏控制器,它可以很方便的控制controller 的显示,弹出。操作原理是一个栈,先进后出。
导航栏点击返回时, 会把刚压入栈的controller 弹出,这些已经封装好,不用我们做什么。但有时我们会有一个场景:比如我们填写一个表单时,用户点击了返回按钮,我们这时应该弹出提示,确定退出,但用户确定后,才pop 出这个controller。这时就需要我们拦截返回事件,通常做法就是在当前controller自定义返回按钮,这种做法最简单,但缺点也很明显:

1.每个需要拦截的controller都需要自定义按钮,造成代码冗余。
2.自定义的按钮与系统按钮样式有差别。

那我们这里利用OPP的思想,我们自己封装一个CustomizedNavigationController,继承于UINavigationController,扩展它的功能。CustomizedNavigationController 扩展的功能就是当 push 进来一个controller 时,给他们设置统一样式的返回按钮。所以我们在CustomizedNavigationController 重写:

-(void)pushViewController:(UIViewController *)viewController animated:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值