Dans mon application de cacao, j'ai besoin d'un NSCell personnalisé pour un NSTableView. Cette sous-classe NSCell contient un NSButtonCell personnalisé pour gérer un clic (et deux ou trois NSTextFieldCells pour le contenu textuel). Vous trouverez un exemple simplifié de mon code ci-dessous.NSButtonCell à l'intérieur personnalisé NSCell
@implementation TheCustomCell
- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {
// various NSTextFieldCells
NSTextFieldCell *titleCell = [[NSTextFieldCell alloc] init];
....
// my custom NSButtonCell
MyButtonCell *warningCell = [[MyButtonCell alloc] init];
[warningCell setTarget:self];
[warningCell setAction:@selector(testButton:)];
[warningCell drawWithFrame:buttonRect inView:controlView];
}
Le problème que je suis coincé avec est: quelle est la meilleure/bonne façon d'obtenir ce bouton (plus précisément: la NSButtonCell) à l'intérieur de cette NSCell fonctionne correctement? "travail" signifie: déclencher le message d'action attribué et afficher l'autre image lorsque l'utilisateur clique dessus. Hors de la boîte, le bouton ne fait rien quand on clique dessus.
Informations/lectures sur ce sujet est difficile à trouver. Les seuls messages que j'ai trouvés sur le net m'ont orienté vers la mise en œuvre
- (BOOL)trackMouse:(NSEvent *)theEvent inRect:(NSRect)cellFrame ofView:(NSView *)controlView untilMouseUp:(BOOL)untilMouseUp;
Est-ce la bonne façon de le faire? Implémenter trackMouse: dans mon NSCell contenant? Et puis transférez l'événement à NSButtonCell? Je m'attendais à ce que NSButtonCell lui-même sache quoi faire quand on clique dessus (et j'ai vu le trackMouse: les méthodes sont plus en cunjunction avec les mouvements de souris - pas comme une roue d'entraînement pour un comportement de clic standard). Mais il semble que ce n'est pas le cas lorsqu'il est inclus dans une cellule elle-même ... Il semble que je n'ai pas saisi la grande image sur les cellules personnalisées, pourtant ;-)
Je serais heureux si quelqu'un pouvait répondez à cette question (ou indiquez-moi un tutoriel ou autre) de sa propre expérience - et dites-moi si je suis sur la bonne voie.
Merci à l'avance, Tobi
Où est-ce que vous dites à la table de dire à sa source de données que le bouton a été coché? – Richard
@Jeremy W. Sherman: C'est probablement une question stupide, mais comment obtenez-vous "bouton de la cellule bouton |"? J'ai essayé différentes choses comme [frame frame], mais ça ne semble pas fonctionner ... – houbysoft