Bizarre... dérivation de NSTextfield inefficace
Chacha
Membre
Bonjour,
Il m'arrive un truc bizarre. Dans une fenêtre, j'ai un NSTextField, connecté par IBOutlet à ma classe MyDocument. Pas de souci, elle marche bien. Or, je voudrais ajouter des comportements à mon NSTextField, pour le drag'n drop.
J'ai donc fait comme d'habitude :
-création d'une classe MyTextField dérivant de NSTextField dans XCode
-spécification de MyTextField comme "Custom class" de l'instance du NSTextField dans Interface Builder
De ce fait, on s'attend normalement à ce que les méthode surchargées de MyTextField soient appelées...
Et bien dans mon cas, non. J'ai par exemple surchargé initWithFrame:, mais rien, rien, elle n'est jamais appelée, comme si aucun objet MyTextField n'était jamais créé.
Bon, j'ai vérifié mon code 30 fois, je ne pense pas qu'une bête faute de frappe soit en cause. J'ai cherché sur Google, et il semble qu'un type a déjà eu ce problème, mais personne n'a jamais répondu à son problème.
http://www.cocoabuilder.com/archive/message/cocoa/2004/11/16/121744
Quelqu'un a déjà eu le cas ? Vous avez une idée ? Ou alors c'est simplement moi qui me trompe dans l'utilisation des Custom class ?
+
Chacha
Il m'arrive un truc bizarre. Dans une fenêtre, j'ai un NSTextField, connecté par IBOutlet à ma classe MyDocument. Pas de souci, elle marche bien. Or, je voudrais ajouter des comportements à mon NSTextField, pour le drag'n drop.
J'ai donc fait comme d'habitude :
-création d'une classe MyTextField dérivant de NSTextField dans XCode
-spécification de MyTextField comme "Custom class" de l'instance du NSTextField dans Interface Builder
De ce fait, on s'attend normalement à ce que les méthode surchargées de MyTextField soient appelées...
Et bien dans mon cas, non. J'ai par exemple surchargé initWithFrame:, mais rien, rien, elle n'est jamais appelée, comme si aucun objet MyTextField n'était jamais créé.
Bon, j'ai vérifié mon code 30 fois, je ne pense pas qu'une bête faute de frappe soit en cause. J'ai cherché sur Google, et il semble qu'un type a déjà eu ce problème, mais personne n'a jamais répondu à son problème.
http://www.cocoabuilder.com/archive/message/cocoa/2004/11/16/121744
Quelqu'un a déjà eu le cas ? Vous avez une idée ? Ou alors c'est simplement moi qui me trompe dans l'utilisation des Custom class ?
+
Chacha
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Les objets issues de la palette d'IB sont déjà instanciés (sauf les custumViews).
Leur méthode init n'est donc pas appelée au chargement du nib.
Utilises plutôt awakeFromNib si tu peux.
Une recherche sur OC (au lieu de Google) t'aurais donné ta réponse, comme celle-ci !
Heureusement que ClicCool, malgré son age, s'en souvient...
Bonne prog.
.
Ah ben d'accord, moi je croyais que même les objets contenus dans le NIB recevaient un init ! Bon ben alors vous avez raison, awakeFromNib marche bien et résout mon problème.
Ouf! Donc mon "Cocoa programming pour MacOS X" ne raconte pas de bêtises ! L'exemple dont je me suis inspiré utilisait effectivement une custom view. Tout s'explique.
Merci bien en tous cas
+
Chacha