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

Customise the navigation bar background for a single view in Swift?

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

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)
}

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

有没有办法防止这种情况发生,使导航栏仅针对特定视图发生变化,而其余部分保持不变?

提前致谢!

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