web-dev-qa-db-fra.com

erreur fatale: init (codeur :) n'a pas été implémenté erreur malgré son implémentation

Je reçois un message d'erreur:

erreur fatale: init (codeur :) n'a pas été implémenté

Pour ma coutume UITableViewCell. La cellule n'est pas enregistrée, a l'identifiant cellule dans le storyboard et lors de l'utilisation de dequeasreusablecell. Dans la cellule personnalisée, j'ai les inits comme:

Code:

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")
}

Mais j'ai toujours l'erreur. Merci.

40
Lee

Remplacez votre méthode init par codeur:

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

En fait, si votre cellule est créée dans Storyboard, je pense qu’elle devrait être attachée à tableView sur laquelle vous essayez de la créer. Et vous pouvez supprimer vos deux méthodes init si vous n’exécutez aucune logique là-bas.

UPD : Si vous devez ajouter une logique - vous pouvez le faire dans la méthode awakeFromNib ().

override func awakeFromNib() {
   super.awakeFromNib()
   //custom logic goes here   
}
105
ruslan.musagitov

Tout d'abord, vous devez appeler la méthode 'init(coder:) "de la super classe. Donc, ajoutez la ligne suivante dans votre méthode required init?(coder aDecoder: NSCoder) comme-

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

Deuxièmement, vous devez supprimer l'instruction fatalError("init(coder:) has not been implemented").

Cela devrait fonctionner.

0
Natasha