Pour une raison quelconque, NSButtonCell pour ma vue de table transmet le mauvais objet en tant que paramètre. J'essaie de lire la balise de NSButtonCell après avoir cliqué dessus.Problèmes avec l'action NSButtonCell
Voici une version simplifiée de mon code:
- (int)numberOfRowsInTableView:(NSTableView *)aTableView {
return 3;
}
- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex {
[aCell setTitle:@"Hello"];
[aCell setTag:100];
}
- (void)buttonClick:(id)sender {
NSLog(@"THE TAG %d",[sender tag]);
NSLog(@"THE TITLE: %@",[sender title]);
}
- (void)refreshColumns {
for (int c = 0; c < 2; c++) {
NSTableColumn *column = [[theTable tableColumns] objectAtIndex:(c)];
NSButtonCell* cell = [[NSButtonCell alloc] init];
[cell setBezelStyle:NSSmallSquareBezelStyle];
[cell setLineBreakMode:NSLineBreakByTruncatingTail];
[cell setTarget:self];
[cell setAction:@selector(buttonClick:)];
[column setDataCell:cell];
}
}
- (void)awakeFromNib {
[self refreshColumns];
}
Le resut de la console dit:
THE TAG: 0
-[NSTableView title]: unrecognized selector sent to instance 0x100132480
A première vue (pour moi au moins) cela devrait dire que l'étiquette est 100, mais ce n'est pas le cas. Aussi (comme il peut être vu de la deuxième sortie de la console), il semble que le paramètre envoyé au sélecteur "buttonClick" est incorrect, je crois qu'il devrait recevoir le NSButtonCell, mais il reçoit le NSTableView.
merci, cela a beaucoup aidé –