我想要一个简单的类,当按钮被选中时,它可以改变背景和文本的颜色。
我有这个:
class buttonSelected : UIButton {
override var highlighted: Bool {
get {
return super.highlighted
}
set {
backgroundColor = UIColor(red: 0.27, green: 0.29, blue: 0.31, alpha: 1.0)
//backgroundColor = UIColor.whiteColor()
setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal)
println(tag)
super.highlighted = newValue
}
}
}
这个子类工作得很好。我手动将标签添加到每个单独的按钮。
第一个问题是为什么
pritnln(tag)
表演两次?
另外,当用户再次按下按钮时,最好的方法是什么。我不能再次子类突出显示,只有选择,禁用左。我通过命令在突出显示的文本上获取此信息。
最佳答案
关于第一个问题,println(标记)显示两次,因为突出显示的值更改了两次:第一次单击按钮时(其值变为true),第二次单击释放时(其值变为false)
关于第二个问题,最好的方法是覆盖所选的var,并基于newValue在其set方法上设置颜色,但是要达到这样的效果,您必须以某种方式更改所选的值,我的第一个想法是使用您已经覆盖的突出显示的var
override var highlighted: Bool {
get {
return super.highlighted
}
set {
if(newValue){
self.selected = !self.selected
}
super.highlighted = newValue
}
}
关于xcode - Swift:如何继承UIButton?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28564397/