[英]How to get UINavigation controller from Tabbar controller and push a specific view
我正在尝试实现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]
,则可以使用,但是我将丢失导航栏。 有谁知道如何做到这一点?
请遵循本教程(Storyboard教程:创建选项卡栏控制器和Web视图)。
http://www.appcoda.com/storyboard-tutorial-create-tab-bar-controller-and-web-view/
这是一个逐步解决方案。
setSelectedIndex
或setSelectedViewController
首先选择该选项卡。 rootViewController
的选定视图控制器的rootViewController
(您的UINavigationController
)。 样例代码:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
UITabBarController* tabController = self.window.rootViewController;
if (tabController.selectedIndex != 2) [tabController setSelectedIndex:2];
UINavigationController *navController = tabController.selectedViewController;
NSString * storyboardName = @"others";
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle: nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"BusinessAccountView"];
[navController pushViewController:vc animated:YES];
[PFPush handlePush:userInfo];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.