swift中的自定义类初始化

时间:2014-11-19 11:08:29

标签: ios swift initialization

我正在尝试在swift中实现一个扩展UIControl的自定义类,并且无法完成初始化。

class UIRangeSlider: UIControl {
    var minimumValue: Float32
    var maximumValue: Float32

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

    init(frame: CGRect, minimumValue: Float32, maximumValue: Float32) {
        self.minimumValue = minimumValue
        self.maximumValue = maximumValue
        super.init(frame: frame)
    }
}

当我尝试使用:

创建此类的实例时
var sliderFrame = CGRect(x: 20, y: 200, width: 200, height: 5)
var slider = UIRangeSlider(frame: sliderFrame, minimumValue: 1, maximumValue: 10)

我收到错误:

Property 'self.minimumValue' not initialised at super.init call

编写此自定义初始化程序的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

Swift总是要求任何新的类成员拥有某种默认值,然后才能调用指定的init

required init(coder aDecoder: NSCoder) {
    self.minimumValue = 0.0 // some default value
    self.maximumValue = 0.0 // some default value

    super.init(coder: aDecoder)
}