【问题标题】:iOS navigation with TabBarController and NavigationController带有 TabBarController 和 NavigationController 的 iOS 导航
【发布时间】:2016-07-05 03:14:52
【问题描述】:

我有一个 RootViewController,它是一个 TabBarController,它有 5 个 ChildViewController。每个孩子都是一个 NavigationController。每个孩子都可以展示一个 FullScreenController,其中 modalTransitionStyle 设置为 OverFullScreen 并通过调用 showDetailViewController 来展示。 FullScreenController 需要能够进一步导航,这会将另一个 ViewController 推入当前 NavigationController。

我面临的问题是FullScreenController是由TabBarController呈现的,由于是FullScreenController的PresentingViewController,我无法再次呈现原来的TabBarController。

任何人都知道如何正确支持具有以下要求的 ViewController 层次结构

  • 应该支持导航栏和标签栏
  • 应该能够呈现没有导航栏和标签栏的 FullScreenController
  • FullScreenController 可以导航到另一个同时具有导航栏和标签栏的 ViewController
  • 应该支持向后导航
  • 标签栏上的每个标签都代表自己的导航堆栈

【问题讨论】:

  • 我认为您的要求有冲突;要么你想要全屏演示,在这种情况下你需要退出这个返回标签栏,或者你想要随时切换标签的能力,在这种情况下你不应该在标签栏上显示全屏,而是显示在当前选项卡中,这将允许用户在选项卡之间切换,同时保持每个选项卡内的导航状态
  • 是的,我知道它是冲突的,但这是要求。这种行为类似于 Instagram 的照片地图页面,地图是全屏的,并且可以导航回具有标签栏的外部。
  • 对,所以如果您有某种方式可以退出全屏,那么您应该会回到标签栏。您不想再次显示标签栏,您想放松回到标签栏的现有实例,否则您将永远进入越来越深的视图控制器堆栈。如果您使用的是 segues,那么您可以在全屏视图中拥有一个控件(按钮等),触发在模态演示之前的展开
  • 据我所知,Instagram 的照片地图页面在深入导航时不会被关闭。它的行为就像 PhotoMapController 一样只是推入 NavigationController。
  • 您需要考虑用户将如何浏览您的应用。也许有一些方法可以让您在屏幕上滑动标签栏控制器,而不是在屏幕上显示。展示一个新的标签栏控制器不是办法。

标签: ios navigation


【解决方案1】:

您可以将全屏视图作为子控制器添加到每个标签栏控制器,并保持关闭按钮不显示全屏视图(关闭会将它们带回标签栏视图)。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多