以编程方式推送时导航栏消失

Posted

技术标签:

【中文标题】以编程方式推送时导航栏消失【英文标题】:Navigation bar disappearing when pushed programmatically 【发布时间】:2015-05-31 23:07:41 【问题描述】:

我一直在开发一个应用程序,它从 AppDelegate 推送一个视图控制器。当它执行时,之前在被推送的视图控制器上的导航栏消失了。现在它是一个静态导航栏(不是导航控制器的一部分),但它以前是并且仍然没有工作。我究竟做错了什么?有什么解决办法吗?

这是我用来推送它的 AppDelegate 中的代码:

var storyboard = UIStoryboard(name: "Main", bundle: nil)
var PostView: AnyObject! = storyboard.instantiateViewControllerWithIdentifier("NewView")

var rootViewController = self.window!.rootViewController as! UINavigationController
rootViewController.pushViewController(PostView as! UIViewController, animated: true)

pushViewController 是我想要推动的。

【问题讨论】:

【参考方案1】:

在您尝试推送的视图控制器上,在viewDidLoad 方法上,尝试强制导航栏不被隐藏

self.navigationController?.setNavigationBarHidden(false, animated: false)

如果这有帮助,如果您没有强制视图控制器隐藏导航栏,请检查情节提要上的视图控制器

希望对你有帮助:)

【讨论】:

将此添加到viewWillAppear(_ animated: Bool),因为我的导航栏从推送中弹回消失了。【参考方案2】:

试试这个:

var storyboard = UIStoryboard(name: "NewStoryBoard", bundle: nil)

let vc = storyboard.instantiateViewController(withIdentifier: "NewView") as! UIViewController

self.navigationController?.pushViewController(vc, animated: true)

【讨论】:

【参考方案3】:

rootViewControllerUINavigationController。无论您推动什么视图控制器,都将使用在该 UINavigationController 中定义的 UINavigationBar

如果您不想要UINavigationController 附带的“自动”UINavigationBar,则必须将其他类型的视图控制器设置为初始视图控制器(或将无视图控制器设置为初始值)。

【讨论】:

我的问题不是我不想使用导航控制器。那是我的 NavController 没有出现。只有没有导航栏的视图是。 我想要它,这样我就可以回到以前的视图控制器 你确定你有一个 UINavigationController 作为你的 Storyboard 中的初始视图控制器?

以上是关于以编程方式推送时导航栏消失的主要内容,如果未能解决你的问题,请参考以下文章

IOS:推送segue后导航栏消失

导航到特定视图时导航栏消失

动态创建视图控制器后导航栏消失

以编程方式获取导航栏的高度

iOS:从导航栏中删除以编程方式添加的搜索栏

导航栏从我的故事板项目中消失了