在控制器之间移动时如何阻止导航栏标题更改颜色

时间:2019-04-18 19:00:47

标签: ios swift xcode uikit

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

但是,如果我将后退按钮的样式和文本更改为所需的样式,那么它将导致前一个控制器具有另一个视图控制器的特性,这是我不想做的。

所以本质上,我要问的是,回扫时如何停止一个控制器的特性?

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

    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 = " "

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

1 个答案:

答案 0 :(得分:0)

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

如果只希望对一个视图控制器显示更改,则应在该视图控制器的viewWillAppear中进行更改,并应在同一视图的viewWillDisappear中重置更改控制器。这样,更改(大部分)仅在该视图控制器中可见。