我有一个tabbarcontroller应用程序,我在其中创建了这样的
UITabBarcontroller (UIWindow's rootViewController)
->UINavigationController (first tab)
-->UIViewController
->UINavigationController (second tab)
-->UIViewController
在导航栏中我有一个按钮,其中我将另一个视图控制器推送到自我.navigation控制器。但是现在我也希望从其他导航控制器执行相同的操作。所以我需要推送到顶视图控制器的导航控制器。我需要以一种方式替换[self.navigationController pushViewController:viewcontroller animated:NO];
,使我们需要添加到那里的tabbar控制器中存在的导航控制器.Can有谁帮我这个?
答案 0 :(得分:2)
比将一个引用保存到当前可见的UInavigationController更简单(你应该从UITabBarController委托tabBarController:didSelectViewController:
保留该引用)
因此,您在AppDelegate中添加一个变量:
UINavigationController *navController;
然后:
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
if (viewController.navigationController)
navController = viewController.navigationController;
}
现在,你这样做:
if (navController)
[navController pushViewController:viewcontroller animated:NO];
答案 1 :(得分:0)
首先,您需要访问TabBarController
。我想你可以在AppDelegate
中找到它。
然后你可以打电话:
UIViewController *ctrl = myTabBarCtrl.selectedViewController;
[ctrl.navigationController pushViewController:viewcontroller animated:NO];