在Swift中更改导航栏的颜色

问题描述 投票:0回答:2

我的ViewController中有一个MKMap,我允许用户在“标准”,“混合”和“卫星”之间切换地图类型-就像在“地图”应用中一样。就像在地图应用程序中一样,我有一个底部栏,然后在顶部有一个导航栏。当用户在地图类型之间切换时,条形应该变为黑色背景,“混合”和“卫星”带有白色按钮,而白色背景带有蓝色的“标准”按钮。

我的底部工具栏可以正确更改颜色,但是根本无法使导航栏发生更改。这是用户更改地图类型时的功能:

func changeMapType(sender:UISegmentedControl){
    if mapType.selectedSegmentIndex == 0{
        mapView.mapType = MKMapType.Standard
        toolbar.barTintColor = UIColor(red:1.0, green:1.0, blue:1.0, alpha:1.0)
        toolbar.tintColor = UIColor(red:0.0, green:122.0/255.0, blue:1.0, alpha:1.0)
        self.navigationController?.navigationBar.translucent = false
        self.navigationController?.navigationBar.barTintColor = UIColor(red:1.0, green:1.0, blue:1.0, alpha:1.0)
        self.navigationController?.navigationBar.tintColor = UIColor(red:0.0, green:122.0/255.0, blue:1.0, alpha:1.0)

        defaults.setValue("Standard", forKey: "initialMapType")
    }
    else if mapType.selectedSegmentIndex == 1{
        mapView.mapType = MKMapType.Hybrid
        toolbar.barTintColor = UIColor.blackColor()
        toolbar.tintColor = UIColor.whiteColor()
        self.navigationController?.navigationBar.translucent = false
        self.navigationController?.navigationBar.barTintColor = UIColor.blackColor()
        self.navigationController?.navigationBar.tintColor = UIColor.whiteColor()

    defaults.setValue("Hybrid", forKey: "initialMapType")

}
else if mapType.selectedSegmentIndex == 2{
    mapView.mapType = MKMapType.Satellite
    toolbar.barTintColor = UIColor.blackColor()
    toolbar.tintColor = UIColor.whiteColor()
    self.navigationController?.navigationBar.translucent = false
    self.navigationController?.navigationBar.barTintColor = UIColor.blackColor()
    self.navigationController?.navigationBar.tintColor = UIColor.whiteColor()

    defaults.setValue("Satellite", forKey: "initialMapType")
}

}

有人知道我必须做些什么才能使导航栏更改颜色吗?

我的ViewController中有一个MKMap,我允许用户在“标准”,“混合”和“卫星”之间切换地图类型-就像在“地图”应用中一样。就像在地图应用程序中一样,我也有一个底部栏,并且...

ios swift uinavigationbar tintcolor bartintcolor
2个回答
1
投票

很可能是因为您的self.navigationController为空。首先尝试!这是非常普遍的问题。也许您是从错误的视图控制器调用它的,实际上它没有NC。您可以使用.appearance()接口解决该问题,如下所示:


0
投票

已更新为Swift 3、4、4.2、5 +

© www.soinside.com 2019 - 2024. All rights reserved.