Copier une classe vers une sous-classe

ChachaChacha Membre
14:30 modifié dans API AppKit #1
Salut,

J'ai un souci de langage objet; je me demande si je me mélange les pinceaux, ou pas.
Voici :
-J'ai dérivé la classe NSButtonCell en MyButtonCell, qui contient des données en plus (donc une catégorie ne convient pas).
-Je voudrais remplacer la NSButtonCell d'un bouton donné par une MyButtonCell. Sauf que dans InterfaceBuilder, je règle différents paramètres sur la Cell (border, transparent...) que j'aimerais voir automatiquement repris par mon nouvel objet MyButtonCell. Donc quand je crée mon objet MyButtonCell, j'aimerais que sa "partie NSButtonCell" soit reprise de la ButtonCell initiale.
-je n'ai pas envie de me taper à  la main tous les appels aux méthodes setValue setTransparent, setImage...
-s'il y avait un initWithCell:, je n'aurais pas besoin de le faire à  la main, mais il n'y en a pas.
-en utilisant copy:, y'a-t-il moyen de créer un objet MyButtonCell qui soit "au moins" la copie d'un objet NSButtonCell donné ? Je pense que non.

Voilà , j'espère que c'était compréhensible.

+
Chacha

Réponses

  • BruBru Membre
    14:30 modifié #2
    Je ne crois pas que ce que tu veux faire puisse être réalisable.

    Par contre, tu peux toujours essayer ça (sous réserve) :
    Créer une sous-classe de NSButton (MyButton par exemple) et surcharger la méthode initWithFrame: :
    [tt]
    - (id)initWithFrame:(NSRect)frameRect
    {
        NSCell newCell;

        self=[super initWithFrame:frameRect];
        newCell=[[MyButtonCell alloc] init];
        [self setCell:newCell];
        [newCell release];
        return self;
    }
    [/tt]

    Ensuite, tu peux utiliser les boutons dans iB (en mettant la custom class à  MyButton). Logiquement, tous les attributs de l'inspecteur devraient se reporter à  MyButtonCell.

    .
  • ChachaChacha Membre
    14:30 modifié #3
    dans 1127895935:

    Par contre, tu peux toujours essayer ça (sous réserve) :

    Non, c'est déjà  ce que je fais mais ça ne marche pas (à  une différence près, c'est que je suis dans initWithCoder)

    +
    Chacha
  • 14:30 modifié #4
    Essaie ceci: tu fais une classe MyButton, pour laquelle tu surcharges la méthode suivante comme suit (tu suis ou je ne suis pas assez clair?):
    [tt]+(Class)cellClass {
    return [MyButtonCell class];
    }[/tt]

    Et dans IB, tu n'as qu'à  faire un Custom Class pour ces boutons.
Connectez-vous ou Inscrivez-vous pour répondre.