-2

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

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

在导航栏中,我有一个按钮,我在其中将另一个视图控制器推送到 self .navigation 控制器。但现在我也希望另一个导航控制器也执行相同的操作。所以我需要推送到导航控制器,它是顶视图控制器。我需要[self.navigationController pushViewController:viewcontroller animated:NO];用一种方式替换它这?

4

2 回答 2

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];
于 2013-10-16T12:43:53.277 回答
0

因此,首先您需要访问TabBarController. 我想你可以在某个地方得到它AppDelegate

然后你可以打电话:

UIViewController *ctrl = myTabBarCtrl.selectedViewController;
[ctrl.navigationController pushViewController:viewcontroller animated:NO];
于 2013-10-16T12:45:01.470 回答