返回按钮后隐藏的导航栏

Posted

技术标签:

【中文标题】返回按钮后隐藏的导航栏【英文标题】:Navigation bar hidden after back button 【发布时间】:2016-04-22 21:52:37 【问题描述】:

点击后退按钮后出现问题。

我有一个嵌入在带有 imageView 的 NavigationController 中的第一个视图。 使用以下代码自定义导航栏:

override func viewDidLoad() 
    super.viewDidLoad()

    // color the navigation bar and text
    self.navigationController?.navigationBar.barTintColor = UIColor(red: 0, green: 0.24, blue: 0.45, alpha: 1)
    self.navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName : UIColor.whiteColor()]

当用户点击 imageView 时,会执行以下代码:

self.performSegueWithIdentifier("view2", sender: self)

这是一个show(push) segue。

当用户在view2中点击Back button时,它返回到第一个视图但导航栏已经消失了!

我认为它被某些东西掩盖了,因为我可以在调试期间通过单击 Debug View Hierarchy 看到它。

最后一点,如果我用一个简单的条形按钮替换 imageView 点击操作以转到 view2 并在情节提要而不是在代码中执行 segue,则不会出现问题。

有解决办法吗?

【问题讨论】:

不确定你能不能试试这个?? self.navigationController?.hidesBarsOnTap = false ??我的猜测可能是由于任何原因它被设置为 true,当你点击 imageView 时它可能会隐藏:) 只是一个猜测:) 【参考方案1】:

我刚收到!

我意识到在view2中,我用代码使导航栏半透明:

override func viewDidLoad() 
    super.viewDidLoad()

    // Set the navigation bar translucent
    navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default)
    navigationController?.navigationBar.shadowImage = UIImage()
    navigationController?.navigationBar.translucent = true

所以要修复这个bug,只需在视图消失之前移除半透明属性即可:

override func viewWillDisappear(animated: Bool) 
    navigationController?.navigationBar.translucent = false

希望有一天能对某人有所帮助:)

【讨论】:

【参考方案2】:

放置此代码:

// color the navigation bar and text
self.navigationController?.navigationBar.barTintColor = UIColor(red: 0, green: 0.24, blue: 0.45, alpha: 1)
self.navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName : UIColor.whiteColor()]

在视图中会出现

【讨论】:

刚刚测试过,但是导航栏在返回按钮后仍然隐藏。

以上是关于返回按钮后隐藏的导航栏的主要内容,如果未能解决你的问题,请参考以下文章

iOS 隐藏导航栏返回按钮文字

iOS 隐藏导航栏返回按钮文字

iOS 隐藏导航栏返回按钮文字

Flutter——两种监听导航栏返回按钮的方法

iOS 导航栏-返回按钮-自定义

iOS 调整导航栏返回按钮的位置