46 votes

initwithstyle:reuseIdentifier : non appelé

Je suis en train de créer mon propre UITableViewCell à utiliser comme base d'un prototype de cellule. Dans ma classe, je surcharge la fonction initwithstyle:reuseIdentifier: pour effectuer une initialisation personnalisée, mais mon initialisateur n'est pas appelé. J'ai un point de rupture sur la première ligne à l'intérieur de celui-ci, ainsi qu'un point de rupture sur dequeueResusableCellWithIdentifier: . Le site dequeueResusableCellWithIdentifier: est appelée, et elle renvoie une cellule initialisée, mais le point d'arrêt de la méthode initwithstyle:reuseIdentifier: n'est pas atteint. Toute aide serait la bienvenue.

83voto

jrturton Points 64875

Si votre cellule est créée à partir d'un prototype de storyboard (que vous avez déclaré en tant que classe personnalisée dans IB), elle ne sera pas créée à l'aide de la fonction initWithStyle... mais initWithCoder: à la place, comme tout autre objet chargé à partir d'un nib. Si vous avez du code de configuration, il devrait se trouver là ou dans le fichier awakeFromNib .

12voto

carbonr Points 1853

Avec l'implication du storyboard, tout change. C'est la méthode qui est appelée.

-(id)initWithCoder:(NSCoder *)aDecoder {
    if ( !(self = [super initWithCoder:aDecoder]) ) return nil;

    // Your code goes here!

    return self;
}

0voto

Mahesh Points 21

Si vous utilisez StoryBoarsd, UITableViewContoller n'appellera pas initWithStyle, remplacez-le par initWithCoder et cela fonctionnera maintenant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X