Фатальная ошибка: init (coder:) не была реализована ошибка, несмотря на то, что она реализована
Я получаю сообщение об ошибке:
фатальная ошибка: init (coder:) не был реализован
Для моего пользовательского UITableViewCell
. Ячейка не зарегистрирована, имеет идентификатор cell в раскадровке и при использовании dequeasreusablecell. В пользовательской ячейке у меня есть inits как:
Код:
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
print("test")
super.init(style: style, reuseIdentifier: reuseIdentifier)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
Но у меня все еще есть ошибка. Спасибо.
Ответы
Ответ 1
Замените init на метод coder:
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
Собственно, если у вас есть ваша ячейка, созданная в Storyboard - я считаю, что она должна быть привязана к tableView, на которой вы пытаетесь ее создать. И вы можете удалить оба метода init, если вы не выполняете там никакой логики.
UPD:
Если вам нужно добавить какую-либо логику - вы можете сделать это в awakeFromNib().
override func awakeFromNib() {
super.awakeFromNib()
//custom logic goes here
}
Ответ 2
Во-первых, вам нужно вызвать метод init(coder:)
суперкласса. Итак, добавьте следующую строку в required init?(coder aDecoder: NSCoder)
метод required init?(coder aDecoder: NSCoder)
like-
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
Во-вторых, вам нужно удалить fatalError("init(coder:) has not been implemented")
.
Это должно работать.