美文网首页常见错误收集
ios防止多次push进同一个控制器

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

作者: 不仅仅是个程序猿 | 来源:发表于2017-06-05 10:41 被阅读485次

    最近在做点击通知栏跳到指定页面时遇到多次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;

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

    相关文章

      网友评论

        本文标题:ios防止多次push进同一个控制器

        本文链接:https://www.haomeiwen.com/subject/ppxnkttx.html