我有一个包含多个视图和控制器的应用程序,但在其中一个视图中,我想使顶部导航栏透明,带有白色文本。我在控制器中有以下代码用于所述视图:
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)
}
当我打开应用程序时,其他视图上的顶部栏看起来像预期的那样,当我打开此视图时,顶部栏看起来像我想要的那样。但是当我从这个视图导航到其他视图时,其他视图会将上面代码所做的更改继承到顶部栏。
有没有办法阻止这种情况,导致导航栏仅针对该特定视图进行更改,而其余部分保持不变?
提前致谢!
答案 0 :(得分:6)
任何特定的导航控制器只有一个导航栏,因此如果您在一个控制器中更改它,它将全部更改。解决这个问题的方法是将它更改回viewWillDisappear(或viewDidDisappear)中其他控制器所需的任何内容。如果在弹出另一个控制器时返回到同一个实例,您可能还需要移动显示的代码以查看willAppear。