最近在做点击通知栏跳到指定页面时遇到多次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;
希望能帮助遇到此类问题的小伙伴们,发现问题的小伙伴们也请多多指教。
网友评论