ios防止多次push进同一个控制器

最近在做点击通知栏跳到指定页面时遇到多次push进同一个控制器情况,因为由于其他原因可能导致同一条消息推送不止一次。所以导致多次push进同一个控制器。

问题描述:点击通知栏推送过来的消息,跳到“我的消息”界面,如下图:

我是先让tabbar选中“我的”,再跳转过去,跳转之前也做了一些判断,但还是会push进去2次:

在application:didFinishLaunchingWithOptions:方法中实现

JumpToMessagePage方法

但是杀死app后还是可能会push进“我的消息”页面2次。于是在自定义导航控制器中解决了。

首先添加属性,记录上次push进去的控制器。

其次,拦截push方法,判断上次push进来的控制器类型是否与当前push进来的控制器同一类型,如果是同一类型的话就return,不是的话就记录下当前控制器,再push进去

还有重要的一步,pop的话,将记录的上次push进去的控制器置为nil。不然的话pop出去就无法push进来同一类型的控制器了

但是,有时候我们也会遇到多次push进同一个控制器的情况,我们可以在控制器里面将 lastPushedViewController 置为nil。self.navigationViewController.lastPushedViewController = nil;

希望能帮助遇到此类问题的小伙伴们,发现问题的小伙伴们也请多多指教。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ilcy流云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值