美文网首页
解决模态收到推送时的跳转问题

解决模态收到推送时的跳转问题

作者: 二营长开炮 | 来源:发表于2017-05-22 15:28 被阅读0次

    在收到推送时需要跳转到响应的控制器,一般是在TabBarController里面取到当前的nav,然后push.但是如果后台时是在一个模态视图里面push,就不会跳转到对应的控制器而是在返回也就是dismiss的时候展示应该跳转的控制器,假如A-B是模态的,现在后台了,要跳到C,这是点击推送,打开APP,发现还是在B,但实际已经跳转到C了,这时候dismiss,直接展示的就是C,这个时候返回就到A了.
    具体解决方法(我的做法):
    在APPDelegate.h中定义一个这样的属性,这里要用weak弱指针!!!

    /**
     记录进入B时的导航控制器,因为B为模态视图,为了在接收推送跳转时正确跳转(我的Nav因为项目需要自定义了可以用系统的)
     */
    @property (nonatomic, weak) NavigationController *BNav;
    

    在presentViewController之前

    NavigationController *nav = [[NavigationController alloc] initWithRootViewController:BVC];
            AppDelegate* app = (AppDelegate*)[UIApplication sharedApplication].delegate;
            app.BNav = nav;
            
    

    // 获取当前的导航控制器
            UINavigationController* selectedNavigationController = self.selectedViewController;
            AppDelegate* app = (AppDelegate*)[UIApplication sharedApplication].delegate;
            if (app.BNav) {
                selectedNavigationController = app.BNav;
            }
    // 推进
            [selectedNavigationController pushViewController:XMode.pushMode.vc animated:YES];
    

    这个时候推送过来push就会到正确的页面

    相关文章

      网友评论

          本文标题:解决模态收到推送时的跳转问题

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