如何通过 prepareForSegue 更改按钮的色调
How can I change tint color of a button via prepareForSegue
我有两个 viewController,它们与同一个 mapViewController 有连接。所以我试图改变地图上工具栏按钮的色调,但当然它说错误为零。还有另一种方法可以做到这一点。因为我需要告诉编译器,如果 segue 来自 tableViewController,则将条形按钮设为白色 "As if not selected",如果 segue 是从 mainViewController 发送,则将条形按钮设为黄色。
这是表格视图代码
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "locationView"{
let mapVC:MapViewController = segue.destinationViewController as! MapViewController
mapVC.pinCoordinate = coordinate
mapVC.snippetTitle = caseTitleOnLocation
mapVC.snippetDescription = caseDescriptionOnLocation
mapVC.addLocation.tintColor = UIColor.whiteColor() //error
这是mainViewController代码
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "rescueMap"{
let mapVC:MapViewController = segue.destinationViewController as! MapViewController
mapVC.addLocation.tintColor = UIColor.yellowColor() //error
}
您出现错误的原因是您试图在一个尚不存在的视图上设置一个值。
你可以在mapViewController
中创建一个UIColor()
变量,然后传递你想要的颜色
例如
在mapViewController中
class mapViewController{
var barColor : UIColor!
override func viewDidLoad(){
self.toolbar.barTintColor = barColor
}
}
在mainViewController中
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "rescueMap"{
let mapVC:MapViewController = segue.destinationViewController as! MapViewController
mapVC.barColor = UIColor.yellowColor()
}
你会明白的。
这是个问题,因为您使用的是未在视图中初始化的栏。所以首先初始化地图 view/Toolbar 以更改色调。
我有两个 viewController,它们与同一个 mapViewController 有连接。所以我试图改变地图上工具栏按钮的色调,但当然它说错误为零。还有另一种方法可以做到这一点。因为我需要告诉编译器,如果 segue 来自 tableViewController,则将条形按钮设为白色 "As if not selected",如果 segue 是从 mainViewController 发送,则将条形按钮设为黄色。
这是表格视图代码
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "locationView"{
let mapVC:MapViewController = segue.destinationViewController as! MapViewController
mapVC.pinCoordinate = coordinate
mapVC.snippetTitle = caseTitleOnLocation
mapVC.snippetDescription = caseDescriptionOnLocation
mapVC.addLocation.tintColor = UIColor.whiteColor() //error
这是mainViewController代码
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "rescueMap"{
let mapVC:MapViewController = segue.destinationViewController as! MapViewController
mapVC.addLocation.tintColor = UIColor.yellowColor() //error
}
您出现错误的原因是您试图在一个尚不存在的视图上设置一个值。
你可以在mapViewController
中创建一个UIColor()
变量,然后传递你想要的颜色
例如
在mapViewController中
class mapViewController{
var barColor : UIColor!
override func viewDidLoad(){
self.toolbar.barTintColor = barColor
}
}
在mainViewController中
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "rescueMap"{
let mapVC:MapViewController = segue.destinationViewController as! MapViewController
mapVC.barColor = UIColor.yellowColor()
}
你会明白的。
这是个问题,因为您使用的是未在视图中初始化的栏。所以首先初始化地图 view/Toolbar 以更改色调。