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

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

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

ios防止多次push进同一个控制器_第1张图片

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

在application:didFinishLaunchingWithOptions:方法中实现

JumpToMessagePage方法

ios防止多次push进同一个控制器_第2张图片

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

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

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

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

ios防止多次push进同一个控制器_第3张图片

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

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

你可能感兴趣的:(ios防止多次push进同一个控制器)