【问题标题】:How to stop navigation bar title from changing color when moving from controller to controller从控制器移动到控制器时如何阻止导航栏标题更改颜色
【发布时间】:2019-04-18 19:00:47
【问题描述】:

我有两个链接在一起的控制器(通过显示,例如推送),所以当我单击一个按钮时,它将转到另一个视图控制器。这显然会创建一个返回箭头以返回到我想要的前一个控制器。

但是,如果我将后退按钮的样式和文本更改为我想要的任何内容,它就会导致前一个控制器具有另一个视图控制器的特性,这是我不想做的事情。

所以本质上我要问的是,当向后滑动时,您将如何阻止一个控制器的特性转到另一个控制器?

这是我使用的大多数视图控制器的代码:

    self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
    self.navigationController?.navigationBar.shadowImage = UIImage()
    self.navigationController?.navigationBar.isTranslucent = true
    self.navigationController?.navigationBar.titleTextAttributes = . 
   [NSAttributedString.Key.foregroundColor: UIColor.darkGray,
         NSAttributedString.Key.font: UIFont(name: "Avenir Next", size: 20)!]
    self.navigationController?.navigationBar.topItem?.title = " "

不同的控制器有细微的差别,但是这没有任何作用,因为它在返回时会发生变化

【问题讨论】:

    标签: ios swift xcode uikit


    【解决方案1】:

    如果视图控制器修改了导航控制器(或其导航栏)的属性,则更改将出现在共享该导航控制器的所有视图控制器中。

    如果您希望更改仅针对一个视图控制器出现,那么您应该在该视图控制器的viewWillAppear 中进行更改,并且您应该重置同一视图控制器的viewWillDisappear 中的更改。这样,更改(大部分)仅在该视图控制器中可见。

    【讨论】:

    • 非常感谢您的帮助!只是想问一下,我将如何重置更改以便它们不会继续到其他控制器?再次感谢您的帮助!
    • 添加代码,将相同的更改属性设置回其原始值。
    猜你喜欢
    • 2016-01-14
    • 2017-07-25
    • 2017-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-02
    • 1970-01-01
    相关资源
    最近更新 更多