【发布时间】:2015-04-10 08:31:50
【问题描述】:
我正在尝试实现didReceiveRemoteNotification 方法。当我收到推送通知时,我想显示特定视图。我的应用程序使用UITabbarController 作为根视图控制器和UINavigationController 作为它的孩子:
这是我的 appdelegate:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
UINavigationController *navController = (UINavigationController *)[[((UITabBarController *)self.window.rootViewController) viewControllers] objectAtIndex:2];
NSString * storyboardName = @"others";
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle: nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"BusinessAccountView"];
[navController pushViewController:vc animated:YES];
[PFPush handlePush:userInfo];
}
不幸的是,代码不起作用。如果我将[navController pushViewController:vc animated:YES] 更改为[navController presentViewController:vc animated:YES],它会起作用,但我会丢失导航栏。
有谁知道如何做到这一点?
【问题讨论】:
-
不要从
objectAtIndex:2获取navController,而是尝试使用selectedViewController获取当前显示的导航控制器。有用吗? -
或者在推送视图控制器之前尝试设置
tabBarController.selectedIndex = 2。这行得通吗?
标签: ios objective-c uitabbarcontroller uinavigationbar