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

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/

10-09 16:15