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推送到堆栈中,并不好。也许,有人遇到过这样的问题,可以帮我解决一下吗?
谢谢你。
答案 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];
}
}
}
}