如何动态指示SWIFT函数中按钮的属性

时间:2016-02-25 00:42:19

标签: ios swift

我正在创建一个更改标签背景颜色的函数,但由于标签可能是众多标签之一,我需要传递标签名称并在函数中构造它。类似的东西:

selectedLabel.backgroundColor = UIColor(red: 0.1, green: 0, blue: 0, alpha: 0.1)

其中 selectedLabel 是要传递的标签的名称。目前,我在selectedLabel上收到了一个错误,即' String'没有会员"

请参阅以下代码:

@IBAction func btn1B(sender: AnyObject)
{

    let passedLabel = "btn1B"
    changeColor (passedLabel)

}

/ ********************************************** **** /

func changeColor (selectedLabel: String)
{
    switch nextColor
    {
    case 0: selectedLabel.backgroundColor = UIColor(red: 0.1, green: 0, blue: 0, alpha: 0.1)
    case 1: selectedLabel.backgroundColor = UIColor(red: 0.2, green: 0, blue: 0, alpha: 0.2)
    case 2: selectedLabel.backgroundColor = UIColor(red: 0.3, green: 0, blue: 0, alpha: 0.3)
    case 3: selectedLabel.backgroundColor = UIColor(red: 0.4, green: 0, blue: 0, alpha: 0.4)
    case 4: selectedLabel.backgroundColor = UIColor(red: 0.5, green: 0, blue: 0, alpha: 0.5)
    case 5: selectedLabel.backgroundColor = UIColor(red: 0.6, green: 0, blue: 0, alpha: 0.6)
    case 6: selectedLabel.backgroundColor = UIColor(red: 0.7, green: 0, blue: 0, alpha: 0.7)
    case 7: selectedLabel.backgroundColor = UIColor(red: 0.8, green: 0, blue: 0, alpha: 0.8)
    default: print("end of colors")
    }

}

2 个答案:

答案 0 :(得分:0)

您将字符串作为参数传递,因此无法正常工作。

方法1: 改为传递标签对象。将标签链接到类属性:

// MARK: properties
@IBOutlet weak var yourLabel: UILabel

// MARK: actions
@IBAction func btn1B(sender: AnyObject)
{

    changeColor(self.yourlabel)

}

方法2(不如方法1):您可以在故事板中找到带有ID的标签。

答案 1 :(得分:0)

根据一个变量btn1B的名称,您看起来正在改变按钮本身的颜色而不是单独的标签。如果是这种情况,请将sender的类型从AnyObject更改为UIButton,然后对包含changeColor()代码的所有按钮仅使用一种操作方法使用selectedLabel更改sender的每次出现。

如果您为btn1B行的每个按钮都有单独的标签,则会从btn1B()的第一行丢失引号并更改changeColor()中的类型从StringUILabel