组合标签栏和导航栏控制器出现问题

Posted

技术标签:

【中文标题】组合标签栏和导航栏控制器出现问题【英文标题】:Having problems with combined tab bar and navigation bar controllers 【发布时间】:2016-09-08 21:39:51 【问题描述】:

尽管我使用 segues(通过推送),但后退按钮无法转到上一个视图控制器时遇到问题。我认为有一个问题,因为我在 Apple 的文档中看到这条线说

“使用标签栏控制器的应用程序还可以在一个或多个标签中使用导航控制器。当在同一用户界面中组合这两种类型的视图控制器时,标签栏控制器始终充当导航控制器的包装器。”

但我希望能够使用登录屏幕,然后在进入标签栏控制器之前移动到几个屏幕,因此没有将导航栏包裹在标签栏控制器中。我知道许多流行的应用程序都使用它,例如您登录的 Instagram,然后它会显示标签栏控制器。

我当前的应用布局是这样的;

根导航控制器->登录->餐(gif)->选项卡控制器(每个选项卡的导航控制器(根据链接)->(我的列表/我的餐点/购物清单/项目)

How to implement tab bar controller with navigation controller in right way

【问题讨论】:

在完成登录屏幕后,为什么不以模态方式显示标签栏控制器?请参阅 创建标签栏界面 here 了解苹果的建议安排。 在标签栏控制器顶部以模态方式显示包含登录流程的导航控制器,并在登录过程完成后将其关闭。 @beyowulf 非常感谢,我不知道模态呈现。我只有一个问题,如果有人登录然后转到设置并注销(也以模态方式显示),那么当他们重新登录时,它将关闭 viewController 并转到设置页面(他们注销的地方)而不是比第一个选项卡。你能想出什么办法来解决这个问题吗?非常感谢,杰克 【参考方案1】:

看起来它的行为符合预期,后退按钮用于您的根导航控制器,当您使用“后退”按钮时,它会弹出您的标签栏控制器。我实际上希望您会看到两个导航栏,一个是您的根导航栏,另一个是“我的膳食”选项卡中的导航栏,除非您隐藏一个。

您可以在按下标签栏时隐藏根导航栏,但您可能需要在每个标签的导航栏中都有一个按钮,以便从根导航控制器弹出标签栏。

Beyowulf 建议将其呈现为模态是另一种选择。

【讨论】:

以上是关于组合标签栏和导航栏控制器出现问题的主要内容,如果未能解决你的问题,请参考以下文章

标签栏和 UISearchController 出现黑屏

隐藏标签栏和导航栏

标签栏、导航栏和段控制的设计问题

iOS MapView 位于导航栏、状态栏和标签栏控制器下

使用标签栏和导航实例化深度视图控制器

UITableView:向上滑动时收缩标签栏和导航栏