人们如何在UITabBarController下弹出他们的UINavigationController堆栈?

时间:2010-03-24 10:15:15

标签: iphone xcode uiviewcontroller uinavigationcontroller uitabbarcontroller

我有四个UINavigationControllers分配给UITabBarController中的一个选项卡。每个UINavigationController都管理一个UIViewController,它本身可以分支到它下面的其他UIViewControllers。

我的问题是,如果用户在一个标签下导航到UIViewController,该UIViewController分层显示由UINavigationController管理的主UIViewController,然后用户推送另一个标签,然后返回到原始标签,我如何才能使用户看到由UINavigation控制器管理的主要UIViewController?而不是他离开的页面?

UITabBarController在IB

中设置

2 个答案:

答案 0 :(得分:7)

实施UITabBarControllerDelegate协议并在通知用户选择了其他选项卡时,向根控制器弹出。

类似的东西:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    [viewController.navigationController popToRootViewControllerAnimated:YES];
}

上面的代码应弹出到任何导航控制器的根控制器,该控制器是新选择的选项卡的主视图控制器。您可以尝试在应用程序委托中实现协议。并且不要忘记将app delegate实际指定为标签栏控制器的委托。

答案 1 :(得分:2)

最初对我不起作用,后来我注意到我所有用于不同标签的viecontrollers实际上都是UINavigationControllers

因此我修改了上面的代码,如下所示,它起作用了:

[(UINavigationController *)viewController popToRootViewControllerAnimated:NO];