我的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,我允许用户在“标准”,“混合”和“卫星”之间切换地图类型-就像在“地图”应用中一样。就像在地图应用程序中一样,我也有一个底部栏,并且...
很可能是因为您的self.navigationController为空。首先尝试!这是非常普遍的问题。也许您是从错误的视图控制器调用它的,实际上它没有NC。您可以使用.appearance()接口解决该问题,如下所示:
已更新为Swift 3、4、4.2、5 +