Удобство инициализации для кастомной ячейки Swift - PullRequest
0 голосов
/ 07 августа 2020

Я пытаюсь написать удобный init для моей пользовательской ячейки, но когда я это получаю, я получаю ошибки:

Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)

Fatal error: Use of unimplemented initializer 'init(style:reuseIdentifier:)' for class 'CustomCell'

Код для удобного init следующий:

convenience init?(style: UITableViewCell.CellStyle) {
     self.init(coder: NSCoder.init())

     defineLayout()
}

Если я использую обычную перезапись инициализации, она работает как задумано

override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
    super.init(style: style, reuseIdentifier: reuseIdentifier)
  
    defineLayout()
}

Думаю, проблема в self.init(coder: NSCoder.init())?

1 Ответ

0 голосов
/ 07 августа 2020

Вы не можете отправить кодировщик, который не содержит никаких данных, этот метод инициализации связан с раскадровкой, поэтому данные, переданные в него, поступают от компонента, который вы добавили в свою раскадровку.

Что вам нужен не удобный init, а переопределить исходный

required init?(coder: NSCoder) {
    super.init(coder: coder)

    defineLayout()
}
...