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

the*_*men 7 objective-c apple-push-notifications ios

我正在使用故事板,我想在用户收到远程推送通知时始终打开相同的视图,即使应用程序处于后台或打开.我需要呈现的视图是在故事板中设置初始视图控制器之后的四个视图.我看过这篇文章:

如何以通知作为新窗口显示模态视图?(没有父母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];


}
Run Code Online (Sandbox Code Playgroud)

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

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[locationViewController setViewControllers:]: unrecognized selector sent to instance 0x42ccd0'
Run Code Online (Sandbox Code Playgroud)

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

非常感谢.

Par*_*ram 19

请尝试以下代码:

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

  • 请试试这个.[navController.visibleViewController.navigationController pushViewController:notificationViewController animated:YES]; (2认同)