在Swift中自定义单个视图的导航栏背景?

时间:2015-05-11 00:05:16

标签: ios swift uinavigationcontroller

我有一个包含多个视图和控制器的应用程序,但在其中一个视图中,我想使顶部导航栏透明,带有白色文本。我在控制器中有以下代码用于所述视图:

override func viewDidLoad() {
    super.viewDidLoad()

    let bar:UINavigationBar! =  self.navigationController?.navigationBar

    bar.tintColor = UIColor.whiteColor()
    bar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default)
    bar.shadowImage = UIImage()
    bar.backgroundColor = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0.0)
}

当我打开应用程序时,其他视图上的顶部栏看起来像预期的那样,当我打开此视图时,顶部栏看起来像我想要的那样。但是当我从这个视图导航到其他视图时,其他视图会将上面代码所做的更改继承到顶部栏。

有没有办法阻止这种情况,导致导航栏仅针对该特定视图进行更改,而其余部分保持不变?

提前致谢!

1 个答案:

答案 0 :(得分:6)

任何特定的导航控制器只有一个导航栏,因此如果您在一个控制器中更改它,它将全部更改。解决这个问题的方法是将它更改回viewWillDisappear(或viewDidDisappear)中其他控制器所需的任何内容。如果在弹出另一个控制器时返回到同一个实例,您可能还需要移动显示的代码以查看willAppear。