在收到推送时需要跳转到响应的控制器,一般是在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就会到正确的页面