UITabBarController与UINavigationController“更多”选项卡问题

时间:2009-10-20 18:53:23

标签: iphone uinavigationcontroller uitabbarcontroller

UITabBarController与UINavigationController“更多”标签问题

在UITabBarController中使用UINavigationController时出现问题。我有一个包含6个项目的TabBar。当然,会出现一个标准项“more”,并且有两个UINavigationControllers不适合TabBar。问题的核心是:当我使用可见项目(前四个)时,可以在UINavigationController中推送UIViewController:

[self.navigationController pushViewController:userDataViewController animated:YES];

如果您以“更多”方式调用并以这种方式重新排列项目,则可见UINavigationController进入“更多”,当调用它时,将出现userDataViewController。这个userDataViewController是最后一个,它有一个堆栈,一个Back按钮返回到“more”,但不是在userDataViewController出现之前的控制器。

我知道实际上选择器pushViewController是从“more”调用的,它将我的UINavigationController推送到堆栈中,并不好。也许,有人遇到过这样的问题,可以帮我解决一下吗?

谢谢你。

1 个答案:

答案 0 :(得分:3)

一种可能的解决方案是在用户保存标签栏配置的更改之前强制您的UINavigationController返回其根视图控制器。为此,请在选项卡栏控制器的委托中实现以下方法:

- (void)tabBarController:(UITabBarController *)tabBarController willEndCustomizingViewControllers:(NSArray *)viewControllers changed:(BOOL)changed {
    if (changed) {
        NSLog (@"User has rearranged tab bar items");

        for (UIViewController *controller in tabBarController.viewControllers) {
            if ([controller isKindOfClass:[UINavigationController class]]) {
                [((UINavigationController *)controller) popToRootViewControllerAnimated:NO];
            }
        }
    }
}