0

我读到在 iOS 应用程序中拥有这样的结构是很糟糕的。但是如果一个应用程序有很多UINavigationControllers 和UITabBarControllers 怎么办。但是一UINavigationBar和一UITabBar总是只显示?其他UINavigationBars 和UITabBars 被隐藏。

已编辑

例如,在基于导航的应用程序中,我称此代码为:

- (IBAction)openTabsController:(id)sender {        

    tabOneController *tabOneViewContr = [[[tabOneController alloc] initWithNibName:@"tabOneController" bundle:nil] autorelease];
    UINavigationController *tabOneNavContr = [[UINavigationController alloc] initWithRootViewController:tabOneViewContr];

    tabTwoController *tabTwoViewContr = [[[tabTwoController alloc] initWithNibName:@"tabTwoController" bundle:nil] autorelease];
    UINavigationController *tabTwoNavContr = [[UINavigationController alloc] initWithRootViewController:tabTwoViewContr];


    UITabBarController *tabContr = [[[UITabBarController alloc] init] autorelease];
    tabContr.viewControllers = [NSArray arrayWithObjects:tabOneNavContr,tabTwoNavContr, nil];
    sel.navigationController.navigationBar.hidden = YES;
    [self.navigationController pushViewController:tabContr animated:YES];
}

调用此方法后,我有两个UINavigationControllers 和一个UITabBarController。同时我在屏幕上有一个UINavigationBar和一个。UITabBar

已编辑

近似方案。

在此处输入图像描述

从一开始,我们就有一个 UINavigationController 允许在视图(圆圈)之间导航。然后在按下 UITabBar 后出现并允许在视图之间切换。一个带有两个小矩形的矩形是一个带有 2 个 UITabBarItem 的 UITabBar 的视图。当我们按下任何 UITabBarItem 时,会出现另一个 UIView。在这个 UIView 中,我们可以按下某个按钮,该按钮使用另一个 UITabBar 调用另一个视图。当前的 UITabBar 如果没有被另一个 UITabBar 隐藏,则在推送后可见。现在更清楚了吗?上面的代码几乎可以完美运行(除了一些动画,不包括 Apple 的限制)

4

2 回答 2

1

加戈,

我不确定我是否理解您的问题,但苹果文档很清楚。如果你使用- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated它说viewController

不能是选项卡栏控制器的实例,并且它不能已经在导航堆栈上。

既然你这样做了

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

您正在导航堆栈中推送一个标签栏控制器实例。

如果您添加您将实现的结构,也许我可以帮助您找到另一个解决方案。

希望有帮助。

于 2012-09-07T07:35:51.347 回答
1

一个应用程序在任何时候都应该只有一个工作的 tabBarController。

tabBarController 也应该是根视图控制器。总是。(如果在 tabBarController 之前需要登录视图或类似视图,则删除登录视图,创建 tabBarController,然后将其设为根)。

这是 Apple 工程师亲自向我提出的 Apple 建议。

请记住,应用程序应该是快速且易于使用/导航的小型应用程序。如果您觉得需要多个 tabBarController,那么从 UI/可用性的角度来看,您的应用程序设计可能是非常错误的。

于 2012-09-07T11:50:11.710 回答