Sous-classement de NSImageCell

olofolof Membre
13:16 modifié dans API AppKit #1
Salut à  tous !

J'ai une fenêtre avec une matrice de NSImageCell. Tout va bien.

Maintenant, j'aimerais ajouter des fonctionnalités à  ces cellules. J'ai donc fait une nouvelle classe (FGImageCell), qui est une sous-classe de NSImageCell.

Dans IB, j'ai modifié le custom class de mes 16 cellules en mettant FGImageCell.

Et je me suis dit que lorsque la fenêtre s'affiche, mes 16 FGImageCell allaient être instanciés. J'ai donc ajouté à  mon FGImageCell.m la méthode init :

<br />-(id)init<br />{<br />	NSLog(@&quot;Youpie !!! Initialisation&quot;);<br />	return [super init];<br />}<br />


Mais quand je lance mon appli, rien ne se passe (l'appli fonctionne, mais rien ne s'affiche dans la console). Allez, dites-moi que je n'ai rien compris à  l'objet et à  Cocoa  :'(


Merci !

Réponses

  • BruBru Membre
    13:16 modifié #2
    Il ne se passe rien car tes FGImageCell sont déjà  instanciées dans le nib créé par IB (donc elles ne recevront jamais le message init). Dans le nib, elles sont sous forme "codées".

    Pour réaliser de l'initialisation supplémentaire au moment du chargement du nib en mémoire, 2 solutions :

    - initialisation avant le "décodage" : surcharge la méthode initWithCoder: (c'est cette méthode qui initialise un objet à  partir de sa forme "codée" dans un fichier). N'oublie pas de terminer ta méthode surchargée par :
    [tt]return [super initWithCoder:decoder];[/tt]

    - initialisation finale (après chargement complet du nib et connexion des outlets et actions : surcharge awakeFromNib.

    .
  • olofolof Membre
    13:16 modifié #3
    Merci Bru !

    Ca fonctionne impec  :adios!:
Connectez-vous ou Inscrivez-vous pour répondre.