1

我似乎还没有对 UITabBar、UITabBarController 和 Navigation Controller 有足够的了解来做我想做的事情。我希望有人可以提供一些指导。

我总共有 8 个 VC。我希望其中五个可以从第一个(启动)屏幕上的 TabBar 中选择,并且选择任何项目都会加载特定的 VC。选择 VC 后,它将加载,我需要将 8 个总选项中的大约 5 个作为潜在目的地。其他任何人都一样。

因此,给定的 VC 需要它自己的 TabBar,并且可以在其上包含 8 个 VC 中的任何一个。本质上,我希望用户能够使用标签栏从一个 VC 切换到下一个 VC,而不必返回到根 VC。

我很清楚如何在启动屏幕上使用 tabbarcontroller 来加载我首先想要的视图。但鉴于加载的 VC 可能需要在 ITS 选项卡栏中选择不同的可能 VC,如何设置呢?

回顾一下,我有

ROOT VC有以下选择

VC-A
VC-B
VC-C
VC-D
VC-D

如果您选择 VC-A,您将从 VC-A 中做出以下选择

VC-C
VC-D
VC-E
VC-F

如果您选择 VC-B,您将从 VC-B 中做出以下选择

VC-A
VC-C
VC-D
VC-E
VC-R

等等。

我希望所有这些选择都基于 UITabBar 或 UITabBarController。由于每个 VC 都可能需要大量内存,我还担心,例如,如果 VC-B 选择 V​​C-D,我可能会破坏 VC-B(或至少部分实现,以便在必要时重新加载) 以节省内存(根据需要重新实例化)。

晚了。我希望我已经充分解释了我正在尝试做的事情。此外,不使用任何 NIB;一切都以编程方式编码。

提前感谢任何人都可以提供的任何帮助。我愿意接受任何和所有建议。

4

3 回答 3

2

试试这个

UITabBarController *tabBar = [[UITabBarController alloc]init];
UINavigationController*  nav1=[[UINavigationController alloc]init];
UINavigationController*  nav2=[[UINavigationController alloc]init];
UINavigationController*  nav3=[[UINavigationController alloc]init];

FirstVC  *ObjFirstVC = [[FirstVC alloc] init];
nav1.viewControllers=[NSArray arrayWithObjects:ObjFirstVC, nil];
nav1.tabBarItem.title=@"First";

SecondVC  *ObjSecondVC = [[SecondVC alloc] init];
nav2.viewControllers=[NSArray arrayWithObjects:ObjSecondVC, nil];
nav2.tabBarItem.title=@"Second";

ThirdVC  *ObjThirdVC = [[ThirdVC alloc] init];
nav3.viewControllers=[NSArray arrayWithObjects:ObjThirdVC, nil];
nav3.tabBarItem.title=@"Third";

tabBar.viewControllers=[NSArray arrayWithObjects:nav1,nav2,nav3,nil];
于 2013-07-05T08:26:22.013 回答
2

我认为最好的方法是使用单个UITabBarController. 用你的前 5 个 VC 初始化它并设置它的委托。你UITabBarControllerDelegate应该实施tabBarController:didSelectViewController:. 在该委托方法中,根据选择的 VC 刷新您的UITabBarControllerVC,以便仅显示与所选 VC 相关的 VC。

另一方面,我强烈建议不要这样做。这样的导航结构对于用户来说似乎非常非常复杂。也许您可以通过简化结构来制作更好的应用程序。

于 2013-07-05T08:35:04.030 回答
1

您需要UITabBarController为每个选项卡设置一个UINavigationController(您可以在情节提要中很容易地做到这一点)作为root,对于每个UINavigationController设置一个根视图控制器(当用户第一次点击时要显示的第一个视图控制器)该选项卡)。

完成上述建议后,您将拥有 5 个标签栏,其中 5 个UINavigationControlles带有根视图控制器,现在您可以为每个标签定义您喜欢的任何导航(推/弹出)。

于 2013-07-05T07:59:20.400 回答