我有三个控制器。比方说控制器A,B和C。
控制器A中的导航标题颜色为红色。 控制器B中的蓝色和控制器C中的绿色。
当我按下这些viewcontroller导航标题时,颜色会完美变化。但是,当从C返回A或从B返回A时,导航图块分别变为绿色和蓝色(可能是蓝色和红色)。
我做了什么: 我已经从情节提要中的界面生成器中嵌入了导航控制器。为了更改标题颜色,我在每个视图控制器的viewWillAppear中使用了以下代码。我将所有代码放在主队列中。还进行了检查,没有将它们放在异步块中,结果是相同的。
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
Dispatch.main.async{
self.navigationItem.title = "viewcontroller2"
let textAttributes = [NSAttributedStringKey.foregroundColor: UIColor.blue]
self.navigationController?.navigationBar.titleTextAttributes = textAttributes
}
}
请注意:当我使用导航后退按钮返回时,会出现此问题,但在向后滑动时,标题颜色会正常显示。 iOS版本:11.4.1。在iOS版本10.3.3中,不会发生此问题。
答案 0 :(得分:-1)
请使用like
self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.blue]
self.navigationController?.navigationBar.layoutIfNeeded()