Подумайте, что вы ожидаете от…
override init(frame: CGRect) {
super.init(frame: frame)
alertLayout()
}
и
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
alertLayout()
}
У вас есть необязательная переменная экземпляра title
.Как получить значение в этих 2 случаях?
А в ваших 3 init
…
convenience init(title: String) {
self.title = title
self.init(title: title)
}
init(title: String)
звонит init(title: String)
, что, в свою очередь, вызывает init(title: String)
и т. д. Вы находитесь на бесконечной территории рекурсии.
Если вы хотите создать экземпляр представления в коде, вам понадобится что-то вроде ...
init(title: String, frame: CGRect) {
self.title = title
super.init(frame: frame)
alertLayout()
}
и вам также понадобитсяреализовать
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
Если вы используете это в раскадровке / кончике, вам понадобится…
required init?(coder aDecoder: NSCoder) {
self.title = ""
super.init(coder: aDecoder)
}
, а затем присвойте значение title
впоследствии