如何在Swift中使用按钮类型覆盖UIButton的init?

时间:2016-03-29 05:34:17

标签: ios swift uibutton override

我想继承UIButton并添加一个属性isActive,这是一个Bool,可以更改按钮的外观(这与默认{{1}无关属性)。

但是,我还想在初始化时设置按钮类型。具体来说,我想要像.enabled中那样初始化它,如:

UIButton

但是,因为let button = MyButton(type: .Custom) 是只读的,我不能像以下一样覆盖它:

.buttonType

这会发出错误:convenience init(type buttonType: UIButtonType) { buttonType = buttonType self.init() } (我已经实施了所需的Cannot assign to value: 'buttonType' is a 'let' constant)。

那么如何在初始化时设置init(coder:)

注意:自定义属性也应该用在其他函数中来改变其中的逻辑,所以我选择了一个属性,而不是定义两个函数来改变外观。

1 个答案:

答案 0 :(得分:-8)

buttonType是只读的,因此您必须通过UIButton的便利初始化程序设置类型:

convenience init(type buttonType: UIButtonType) {
    self.init(type: buttonType)
    // assign your custom property
}