我无法在运行时为标签设置backgroundcolor
func example() {
let lbl: UILabel = UILabel()
let arrTemp: NSMutableArray = NSMutableArray()
arrTemp.addObject(lbl)
let tempButton: UIButton? = arrTemp.objectAtIndex(0) as? UIButton
tempButton.backgroundColor = UIColor.whiteColor()
}
答案 0 :(得分:1)
由于多种原因,你的逻辑是错误的。 让我们看看你在做什么
您正在向UILabel
添加arrTemp
。
arrTemp.addObject(lbl)
现在arrTemp
确实包含UILabel
作为唯一元素
接下来,您将检索arrTemp的第一个元素并尝试将其强制转换为UIButton
。
let tempButton: UIButton? = arrTemp.objectAtIndex(0) as? UIButton
当然,条件转换将始终失败(给定当前代码)并且tempButton将填充nil
。
您正在访问tempButton的属性(这是一个可选值)而不解包它。编译的Swift不允许你这样做。
tempButton.backgroundColor = UIColor.whiteColor()
您可以更新最后一行以使编译器满意
tempButton?.backgroundColor = UIColor.whiteColor()
但由于tempButton
始终为nil
,因此永远不会执行最后一项作业。
现在有一个问题:你想做什么?您希望将UILabel
放入数组,然后尝试将该标签用作UIButton
?
答案 1 :(得分:0)
您只能将对象引用为实际的对象。否则,您可以使用无类型数组向标签询问其buttonType
,而不会出现编译时错误。
如果您不想要这种类型的安全,Objective-C可能是更好的选择。
答案 2 :(得分:0)
UILabel
是UIView
的子类; UIView
的可设置属性为backgroundColor
。因此,要简单地设置UILabel
颜色:
func example() {
let lbl: UILabel = UILabel()
lbl.backgroundColor = UIColor.whiteColor()
// do something with lbl.
}