【问题标题】:Create a Tab bar in part of a navigation-based app在基于导航的应用程序的一部分中创建标签栏
【发布时间】:2011-07-15 19:09:09
【问题描述】:

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

【问题讨论】:

  • 您是否正在尝试做类似 AT&T 应用程序的事情?不知道我是否能理解你的问题
  • 我不知道 AT&T 应用程序是做什么的。基本上,我有一个导航控制器作为我的根控制器,并且需要一种方法来实例化和控制导航树深处某个导航屏幕上的一个(或两个)标签栏。

标签: iphone ios4 uinavigationcontroller navigation uitabbarcontroller


【解决方案1】:

不久前我回答了一个类似的问题(如果我理解你的问题的话)。这将添加一个标签栏作为根控制器,每个标签都有自己的导航控制器。

Right design pattern for tabbed navigation views?

编辑


来自UITabBarController documentation

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

【讨论】:

  • 这很有帮助,但不是我想要的。为了清除它,我有一个导航控制器作为我的根控制器,并且需要一种方法来在导航树深处的某个导航屏幕上实例化和控制一个(或两个)选项卡栏。
  • @John:啊,好吧,我会更新答案,你会明白为什么你不应该这样做,如果你需要这样的行为,你应该使用工具栏,但我知道那不一样。我尝试在嵌套层次结构的深处使用 UITabBarController,但是您会收到有关旋转的警告,并且视图控制器之间的自动关系也将无法正常工作。不幸的是。
【解决方案2】:

正如@Jolly good 所提到的,Apple HIG 建议不要进行此类实现。

我可以建议的唯一其他方法是尝试实现一个看起来/行为类似于 tabbarcontroller 的自定义视图控制器并利用它。

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

【讨论】:

    【解决方案3】:

    这是可能的,尽管 @Jolly 引用了文档。

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

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

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

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2011-04-14
      • 1970-01-01
      • 1970-01-01
      • 2010-12-04
      • 2012-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多