【问题标题】:Unwinding Segue results in Clear Navigation Bar展开 Segue 导致清晰的导航栏
【发布时间】: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")]

}

问题是当我单击目标视图控制器上的后退按钮返回到初始视图控制器时,导航栏设置为目标视图控制器的样式。有什么解决办法吗?

【问题讨论】:

    标签: ios swift


    【解决方案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")]
    }
    

    【讨论】:

      猜你喜欢
      • 2014-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-28
      • 2018-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多