在基于导航的应用程序的一部分中创建选项卡栏

时间:2011-07-15 19:09:10

标签: iphone ios4 uinavigationcontroller navigation uitabbarcontroller

我还没有找到一个这样做的例子。客户想要一个基于导航的应用程序,其中两个部分(每个部分一个导航屏幕)需要有一些视图,由标签栏控制。我很难设置连接所有元素的逻辑,并确保流程有意义(例如,点击任何选项卡视图上的导航栏后退按钮将返回到同一屏幕)。

3 个答案:

答案 0 :(得分:0)

我不久前回答了一个类似的问题(如果我理解你的问题的话)。这将添加一个tabbar作为rootcontroller,每个选项卡都有自己的navigationcontroller。

Right design pattern for tabbed navigation views?

修改


来自UITabBarController documentation

  

因为UITabBarController类继承自   UIViewController类,标签栏控制器有自己的视图   可以通过view属性访问。部署选项卡栏时   在界面中,您必须将此视图安装为窗口的根目录。   与其他视图控制器不同,标签栏界面永远不应该   作为另一个视图控制器的子项安装。

答案 1 :(得分:0)

正如@Jolly好提到的,Apple HIG建议不要做这样的实现。

我可以建议的另一种方法是尝试实现一个自定义视图控制器,其外观/行为类似于tabbarcontroller并使用它。

我能想到的另一个黑客,不确定它是否可行或是否可行,以通常的方式创建一个tabbarcontrller,然后设置hideBottomBar属性,并使底部栏仅在您希望它可见时可见。

答案 2 :(得分:0)

尽管有文件证明@Jolly引用良好,但仍有可能。

作为一个真实世界的例子,让我描述一下我的游戏。它由UITabBarController(UITBC)和UINavigationController(UINC)组成。游戏的“主要”窗口是UINC的Root视图,当游戏处于活动状态时,它会隐藏标签栏和导航栏以最大化屏幕空间(不是iPad必需,但仍然......)

当游戏空闲(暂停,轮次之间等)时,它会将UITBC推到导航栏上。它还告诉UITBC选择一个特定的VC。这允许访问其他屏幕(关于,分数,说明,设置等),玩家可以使用标签栏进行导航。除了标签栏上的其他视图之外,游戏控制器只是从导航栏弹出UITBC以恢复到游戏视图以取消暂停,进入下一轮等等(显然,UITBC缓存在游戏VC,以便在必要时可以推回。)

使用这种逻辑,可以混合和匹配标签栏和导航栏控制器以进行复杂导航。你可以在游戏中侥幸逃脱;只需确保任何非游戏应用程序都遵循Apple的HIG,以免混淆用户。

我希望这会有所帮助。