J'essaie de donner à ma classe UITableViewCell un initiateur personnalisé, mais je n'arrive pas à comprendre ce que je fais mal.
Voici mon code:
init(dataObject: [NSManagedObject]!, objectAttributeValues: [String]!,placeholder: String!, segmentedControl: UISegmentedControl?, cellHeight: CGRect, cellWidth: CGRect) {
self.dataObject = dataObject
self.Placeholder.text = placeholder
self.objectAttributeValues = objectAttributeValues
if segmentedControl != nil {
self.segmentedControl = segmentedControl!
didHaveSegmentedControl = true
}
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
J'ai essayé d'appeler super.init (frame: CGRect (...)) mais en implémentant ceci, je reçois une autre erreur: Doit appeler un initialiseur désigné de la super-classe 'UITableViewCell'
Que puis-je faire? Merci beaucoup!
La méthode de travail des initiateurs consiste à ajouter leurs propres propriétés, constantes et fonctions à cette instance, puis à rappeler la superclasse pour un objet de ce type. Plus d'infos ici .
Pour cette raison, vous devez appeler l'initialiseur d'une super-classe avant de quitter l'initialiseur. Ici, je vous suggère d’appeler super.init()
sur la dernière ligne de votre initialiseur. Vous pouvez choisir laquelle des méthodes init
sur UITableViewCell
est la plus appropriée.
override init(frame: CGRect) {
super.init(frame: frame)
}
convenience init(frame: CGRect, dataObject: [NSManagedObject]!, objectAttributeValues: [String]!,placeholder: String!, segmentedControl: UISegmentedControl?, cellHeight: CGRect, cellWidth: CGRect){
self.init(frame: frame)
self.dataObject = dataObject
self.Placeholder.text = placeholder
self.objectAttributeValues = objectAttributeValues
if segmentedControl != nil {
self.segmentedControl = segmentedControl!
didHaveSegmentedControl = true
}
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
J'espère que cela vous aidera Substituez la méthode init d'UIView à Swift