我正在创建一个更改标签背景颜色的函数,但由于标签可能是众多标签之一,我需要传递标签名称并在函数中构造它。类似的东西:
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")
}
}
答案 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()
中的类型从String
到UILabel
。