如何通过prepareForSegue更改按钮的色调颜色

时间:2016-02-01 11:38:24

标签: swift segue uibarbuttonitem tintcolor

我有两个viewControllers,它们具有相同mapViewController的segue。所以我试着改变地图上工具栏按钮的色调颜色,但当然它说错误为零。还有另一种方法可以做到这一点。因为我需要告诉编译器,如果segue来自tableViewController,那么使条形按钮变为白色"好像没有被选中"如果segue是从mainViewController发送的,那么将条形按钮设为黄色。

这是tableView代码

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
    }

2 个答案:

答案 0 :(得分:1)

您遇到错误的原因是您尝试在不存在的视图上设置值YET。

您可以在UIColor()中创建mapViewController变量,然后传递您想要的颜色

实施例

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

你会明白的。

答案 1 :(得分:0)

这是问题所在,因为您正在使用未在视图中初始化的栏。因此,首先初始化地图视图/工具栏以更改色调颜色。