【问题标题】:Using UITabBarController with UINavigationController - Swift 3将 UITabBarController 与 UINavigationController 一起使用 - Swift 3
【发布时间】:2017-05-24 20:02:54
【问题描述】:

我正在制作一个需要使用UITabBarControllerUINavigationController 的应用程序。我在情节提要中制作了以下流程。

See image

现在第一个问题是苹果是否接受了这一点,因为有太多的讨论。

另一个值得关注的问题是,是否有可能消除任何UINavigationController 并仍然获得相同的应用程序流?所需的主要内容是在选项卡的所有子选项卡上都有相同的选项卡栏和导航栏。需要注意的一点是,如果我删除第二个UINavigationController,那么我的应用会在单击返回按钮时直接从子选项卡导航到主视图控制器。

从几个小时以来,我一直坚持这一点。我是 iOS 应用程序开发的新手,从未将任何应用程序上传到应用程序商店。任何帮助都会非常有价值。

编辑:

我把第二个导航控制器放在答案中 - see this flow,但是因为我在 HomeViewController 之前有一个导航控制器,所以我在顶部有一个导航栏,然后在它下面有一些空白空间(完全相等到顶部导航栏),然后是运行时的页面内容。有什么解决办法吗?

【问题讨论】:

  • 这个抽屉......唯一的方法是在容器中使用一个带有标签栏的主视图,然后在顶部使用抽屉、导航等。再说一次为什么苹果可能不接受应用程序? O.o
  • @AvijitNagare 感谢您的链接:)
  • @AvijitNagare 我做了与链接中所示相同的操作,但因为我在 HomeViewController 之前有一个导航控制器,所以我在顶部有一个导航栏,然后在其下方有一些空白空间(正好等于顶部导航栏),然后是运行时的页面内容。有什么解决办法吗?
  • 是的,正确的。当您嵌入 NavC 时,它将保持不变。您可以通过选择 NavC 从属性检查器将其设置为无。或以编程方式隐藏。或尝试自定义导航库。

标签: ios swift uinavigationcontroller uitabbarcontroller uistoryboard


【解决方案1】:

首先嵌入标签栏控制器,如图,嵌入导航栏控制器,如图,最后看起来像

【讨论】:

  • 但在这种情况下,我需要在所有 4 个 tabcontroller 页面中嵌入导航控制器,对吗?
  • 我做了和你展示的一样的事情,但是因为我在 HomeViewContreoller 之前有一个导航控制器,所以我在顶部有一个导航栏,然后在它下面有一些空白空间(正好等于顶部导航栏),然后是运行时的页面内容。有什么解决办法吗?
  • 但是我在导航栏下方得到了空白空间(请参阅已编辑的问题),如果我将第二个导航控制器的栏设置为无,那么当我们从子选项卡单击后退按钮时,它会跳转到主视图控制器
【解决方案2】:

是的,Apple 可以接受。

但是视图层次结构没有正确管理。在您的情况下,标签栏将是第二个导航控制器的根视图控制器。

此外,您推送的选项卡和子选项卡将成为第二个导航控制器的一部分。

这就是你回到主页视图控制器的原因。

最好将导航控制器保留在每个选项卡上以管理其子选项卡层次结构。

您可以在主视图控制器中显示标签栏控制器或 setviewcontroller。

【讨论】:

  • 所以你的意思是流程就像标签栏控制器 > 导航控制器 > tab1;相同的标签栏控制器 > 其他导航控制器 > tab2 ,等等?
  • @user7205816。正确的。所以每个标签导航。反对。将管理自己的堆栈。
  • 但是我在导航栏下方得到了空白空间(请参阅已编辑的问题),如果我将第二个导航控制器的栏设置为无,那么当我们从子选项卡单击后退按钮时,它会跳转到主视图控制器
猜你喜欢
  • 1970-01-01
  • 2012-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-09
  • 2014-05-18
  • 2013-05-07
相关资源
最近更新 更多