2010-12-09 22 views
1

J'essaie de créer un aspect de bouton personnalisé. D'après ce que j'ai compris, NSButtonCell fait le dessin, donc je devrais plutôt l'écraser à la place.NSButton et NSButtonCell personnalisés

Mais le problème est, ma classe CustomButton a d'autres choses comme NSImage, mIsMouseOver etc Actuellement, le dessin est en cours dans la classe CustomButton mais je veux le déplacer vers la cellule.

question est, est-il de toute façon je peux accéder à l'image dans la classe customButton de la classe customButtonCell afin que je puisse utiliser [image drawInRect:...]?

Cordialement, Han

Répondre

1

La méthode drawWithFrame:(NSRect)frame inView:(NSView *)controlView de votre cellule inclut une référence au NSView en cours de dessin à partir duquel vous pouvez accéder aux propriétés de la vue (telles que l'image).

+0

Je pense que cela ressemble à un plan, je vais donner un coup de feu. Tout fonctionnait bien jusqu'à ce que je couche soutenu ma vue et tous mes boutons personnalisés ne fonctionnent pas, donc je dois réécrire tout pour dessiner dans la cellule au lieu du bouton :( – han

1

manière habituelle est de stocker les données dans la sous-classe NSCell. La classe de cellules de base a même une propriété d'image - (id), donc, votre classe de bouton devrait appeler [[self cell] image] quand elle est interrogée pour l'image.

En fait, puisque vous sous-classez NSButton, il contient tout ce dont vous avez besoin, remplacez simplement les méthodes de dessin de la cellule. Et si vous avez besoin d'une propriété supplémentaire - définissez-la dans la cellule, retournez dans le contrôle.