接收远程推送通知时打开视图控制器

我正在使用故事板,并且当用户收到远程推送通知时,我想要始终打开相同的视图,甚至应用程序在后台或打开。 我需要呈现的视图是在故事板中设置的初始视图控制器之后的四个视图。 我看了这个post:

如何将响应通知的模态视图显示为新窗口? (没有父vc)

当用户收到推送通知时打开一个特定的选项卡/视图

所以这里是我的代码:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { UINavigationController *navController = (UINavigationController *)self.window.rootViewController; notificacionViewController *menu = [navController.storyboard instantiateViewControllerWithIdentifier:@"notificacion"]; // First item in array is bottom of stack, last item is top. navController.viewControllers = [NSArray arrayWithObjects:menu,nil]; [self.window makeKeyAndVisible]; } 

但是,当我收到通知,应用程序崩溃与此错误:

 Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[locationViewController setViewControllers:]: unrecognized selector sent to instance 0x42ccd0' 

locationViewController是在故事板中设置为初始的视图控制器。

非常感谢。

请尝试下面的代码:

 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { UINavigationController *navController = (UINavigationController *)self.window.rootViewController; NotificationViewController *notificationViewController = [[NotificationViewController alloc] init]; [navController.visibleViewController.navigationController pushViewController:notificationViewController]; } 

我的代码与我见过的答案有点不同。 事实是,唯一能够运行的代码如下:

  UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController; UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil]; IniciarSliderViewController *controller = (IniciarSliderViewController*)[mainStoryboard instantiateViewControllerWithIdentifier: @"MenuSlider"]; [navigationController pushViewController:controller animated:YES]; 

1.-实例化navigationController。 通常在绝大多数情况下是rootviewcontroller,但不是全部

2.-实例化故事板。 通常被标记为MainStoryboard

3.-实例化您的特定视图控制器。 你必须适应你的特殊情况

4.-你应该这样做,因为你已经设定了所有你需要的