如何在tabbarcontroller中将新的视图控制器推送到当时存在的导航控制器?

时间:2013-10-16 12:36:26

标签: iphone ios uinavigationcontroller uitabbarcontroller

我有一个tabbarcontroller应用程序,我在其中创建了这样的

UITabBarcontroller (UIWindow's rootViewController)
    ->UINavigationController (first tab)
       -->UIViewController
    ->UINavigationController (second tab) 
       -->UIViewController

在导航栏中我有一个按钮,其中我将另一个视图控制器推送到自我.navigation控制器。但是现在我也希望从其他导航控制器执行相同的操作。所以我需要推送到顶视图控制器的导航控制器。我需要以一种方式替换[self.navigationController pushViewController:viewcontroller animated:NO];,使我们需要添加到那里的tabbar控制器中存在的导航控制器.Can有谁帮我这个?

2 个答案:

答案 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];
相关问题