导航栏未显示在嵌入导航控制器中

Posted

技术标签:

【中文标题】导航栏未显示在嵌入导航控制器中【英文标题】:Navigation Bar not showing in embed Navigation Controller 【发布时间】:2017-02-15 20:24:45 【问题描述】:

我正在尝试在屏幕顶部显示导航栏,但它没有显示在嵌入导航控制器中。

在故事板中是这样的:

它在模拟器中:

如您所见,我在屏幕底部创建了一个自定义 TabBar(在 this tutorial 之后),以便我可以在不同视图之间导航。

我相信我将不得不以编程方式加载导航栏,因为我发现的唯一解决方案是将导航控制器设置为初始视图控制器,但我已经将另一个视图设置为初始视图,所以我可以'不要那样做。

【问题讨论】:

Swift 3 - Why is my Navigation Bar not showing?的可能重复 【参考方案1】:

问题:

当您使用 storyBoard 标识符实例化 viewController 时,即使您已向其中添加 NavigationController,它们也不会附带免费的嵌入式导航控制器。结果,您将没有导航栏的 viewController 添加到标签栏 VC。

解决方案:

解决方案 1: 如果您希望每个子 viewController 携带自己的导航控制器,从而拥有自己的导航堆栈,请在子 viewController 后面为导航控制器提供故事板标识符,并实例化导航控制器本身而不是 ViewController .并添加 NavigationController 作为你的标签栏寻找 VC 的孩子。因为导航控制器默认加载嵌入的 VC,所以您会看到带有导航栏的子 VC。

解决方案2:您只关心导航栏,而不是在包含选项卡栏的 VC 后面添加导航控制器查看视图。

希望对你有帮助

【讨论】:

第一个解决方案是我的选择,因为有些视图我不想将导航栏放在顶部,所以我相信我必须做额外的工作来隐藏导航栏或改变它的一些属性。 @alexandre-lara : 很高兴知道您的问题解决了 :) 编码愉快 @SandeepBhandari 我在哪里实例化导航控制器本身?谢谢。 @jorge-saraiva : 抱歉不太确定如果我理解你是正确的,但是如果你想按照我在解决方案 1 中的建议从情节提要中实例化导航控制器,你可以将情节提要标识符添加到导航控制器本身然后你可以在你的代码中实例化它。但通常如果 NaviagtionController 有一个关联的 ViewController 作为它在情节提要中的 initialView Controller,即使该 ViewController 也会被实例化:)【参考方案2】:

您是否尝试过将导航栏限制在您的视图中?否则它可能会移出屏幕。

【讨论】:

【参考方案3】:

您需要将标签栏控制器 segue 指向视图的导航控制器 - 否则,如果您将 segue 直接指向视图,您只是在加载视图而没有附加任何导航控制器。

【讨论】:

以上是关于导航栏未显示在嵌入导航控制器中的主要内容,如果未能解决你的问题,请参考以下文章

Swift 中的 Xcode:导航栏未显示在 UI 集合视图(模拟器)中

SwiftUI - 导航栏未显示在模态导航视图中

导航栏未显示在网页上

SWRevealViewController 隐藏我的前视图控制器的导航栏

Bootstrap 导航栏未正确定位内部的某些元素

导航栏未正确显示