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;

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容