Swift: 如何子类化 UIButton?

Swift: How to subclass a UIButton?

我想要一个简单的 class,它可以在按钮被选中时改变背景和文本的颜色。

我知道了:

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
        }
    }        
}

这个子classing 效果很好。我手动将标签添加到每个单独的按钮。 第一个问题是为什么

pritnln(tag)

显示两次?

另外,当用户再次按下按钮时,最好的恢复方法是什么。我无法再次突出显示 subclass ,并且只剩下选中的,禁用的。我通过突出显示的文本通过 cmd 获取此信息。

关于第一个问题,println(tag) 显示两次,因为突出显示的值改变了两次:第一次是单击按钮时(它的值变为真),第二次是当单击被释放时(它的值变为假)

关于第二个问题,我认为达到您要查找的内容的最佳方法是覆盖选定的 var 并根据 newValue 在其 set 方法上设置颜色,但要达到此目的,您必须以某种方式更改选定的值并且我的第一个想法是使用你已经通过这样做覆盖的突出显示的 var

override var highlighted: Bool {
    get {
        return super.highlighted

    }
    set {

            if(newValue){
                self.selected = !self.selected
            }
            super.highlighted = newValue
    }
}