展开 Segue 导致清晰的导航栏
Posted
技术标签:
【中文标题】展开 Segue 导致清晰的导航栏【英文标题】:Unwinding Segue results in Clear Navigation Bar 【发布时间】:2015-11-14 05:34:31 【问题描述】:我有 2 个视图控制器,连接视图一个显示(推送)segue。在初始视图控制器中,我有以下内容来控制导航栏的样式:
override func viewDidLoad()
super.viewDidLoad()
self.navigationController?.navigationBar.titleTextAttributes = [ NSFontAttributeName: UIFont(name: "ProximaNova-Semibold", size: 18)!, NSForegroundColorAttributeName: UIColorFromRGB("292929")]
self.navigationController?.navigationBar.barTintColor = UIColorFromRGB("f7f7f7")
self.navigationController?.navigationBar.layer.borderColor = UIColorFromRGB("E9E9E9").CGColor
在目标视图控制器中,我有以下内容来控制该控制器中导航栏的样式:
override func viewDidLoad()
super.viewDidLoad()
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.translucent = true
self.navigationController?.navigationBar.titleTextAttributes = [ NSFontAttributeName: UIFont(name: "ProximaNova-Semibold", size: 18)!, NSForegroundColorAttributeName: UIColorFromRGB("FFFFFF")]
问题是当我单击目标视图控制器上的后退按钮返回到初始视图控制器时,导航栏设置为目标视图控制器的样式。有什么解决办法吗?
【问题讨论】:
【参考方案1】:您应该在 viewWillAppear 方法中为两个控制器编写导航栏样式的代码,如下所示。 因为 viewDidLoad 方法在视图的每个生命周期中调用一次。一旦视图被加载,该方法将不会再次执行。所以我们必须使用 viewWillAppear
而不是 viewDidLoad初始视图控制器代码
override func viewWillAppear()
self.navigationController?.navigationBar.titleTextAttributes = [ NSFontAttributeName: UIFont(name: "ProximaNova-Semibold", size: 18)!, NSForegroundColorAttributeName: UIColorFromRGB("292929")]
self.navigationController?.navigationBar.barTintColor = UIColorFromRGB("f7f7f7")
self.navigationController?.navigationBar.layer.borderColor = UIColorFromRGB("E9E9E9").CGColor
目标视图控制器代码
override func viewWillAppear()
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.translucent = true
self.navigationController?.navigationBar.titleTextAttributes = [ NSFontAttributeName: UIFont(name: "ProximaNova-Semibold", size: 18)!, NSForegroundColorAttributeName: UIColorFromRGB("FFFFFF")]
【讨论】:
以上是关于展开 Segue 导致清晰的导航栏的主要内容,如果未能解决你的问题,请参考以下文章