2014-11-19 4 views
0

Я пытаюсь реализовать пользовательский класс, расширяющий UIControl в swift и не могу полностью выработать инициализацию.Инициализация пользовательского класса в swift

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 

Что такое правильный способ, чтобы написать этот обычай Инициализатора?

+0

все неопциональные свойства должны быть инициализированы во время компиляции;) – HAS

ответ

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) 
} 
+0

Можно ли изменить функцию кодера принимать больше параметров? Или есть ли другой способ разрешить инициализацию с заданным минимальным и максимальным значением? –

Смежные вопросы