我想继承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:)
?
注意:自定义属性也应该用在其他函数中来改变其中的逻辑,所以我选择了一个属性,而不是定义两个函数来改变外观。
答案 0 :(得分:-8)
buttonType是只读的,因此您必须通过UIButton的便利初始化程序设置类型:
convenience init(type buttonType: UIButtonType) {
self.init(type: buttonType)
// assign your custom property
}