TableView et NSPopUpButtonCell
mac_manu
Membre
Hello la compagnie,
J'ai une petite question. Dans une tableView, comment sont gérés les NSPopUpButtonCell ? Comment "stocker" l'information dans un objet ? Par [monObjet takeValue:object forKey:[tableColumn identifier]]?
Lorsque je fais [[tableColumn dataCellForRow:row] titleOfSelectedItem], et que je suis sur la dernière ligne de ma table, ça fonctionne. Par contre, si je change mon popUpButtonCell d'une autre ligne, c'est toujours le dernier popUpButtonCell qui est utilisé. De plus, est-ce bien dans - (id)tableView:(NSTableView *)aTableView
objectValueForTableColumn:(NSTableColumn *)tableColumn
row:(int)row
qu'il faut initialiser les NSPopUpButtonCell avec:
array = [NSArray arrayWithObjects:@Comptes, @Catégories, nil];
[[tableColumn dataCell] addItemsWithTitles:array]; ?
Merci pour votre aide :why?:
J'ai une petite question. Dans une tableView, comment sont gérés les NSPopUpButtonCell ? Comment "stocker" l'information dans un objet ? Par [monObjet takeValue:object forKey:[tableColumn identifier]]?
Lorsque je fais [[tableColumn dataCellForRow:row] titleOfSelectedItem], et que je suis sur la dernière ligne de ma table, ça fonctionne. Par contre, si je change mon popUpButtonCell d'une autre ligne, c'est toujours le dernier popUpButtonCell qui est utilisé. De plus, est-ce bien dans - (id)tableView:(NSTableView *)aTableView
objectValueForTableColumn:(NSTableColumn *)tableColumn
row:(int)row
qu'il faut initialiser les NSPopUpButtonCell avec:
array = [NSArray arrayWithObjects:@Comptes, @Catégories, nil];
[[tableColumn dataCell] addItemsWithTitles:array]; ?
Merci pour votre aide :why?:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Donc, chaque ligne de cette colonne aura un popup contenant les mêmes items.
Les items sont à initialiser au tout début (par exemple dans le awakeFromNib) par un traditionnel :
Ensuite, les popUpButtonCell, comme tout NSControl qui se respecte, possède une valeur, en l'occurrence, le numéro de l'item sélectionné.
C'est ce numéro (encapsulé dans un NSNumber) que tu doit passer à tableView:objectValueForTableColumn:row: pour positionner le popup de la ligne à la bonne valeur.
Et c'est un NSNumber contenant le numéro de l'item choisi que la méthode tableView:setObjectValue:forTableColumn:row: reçoit afin de l'enregistrer.
Enfin, tu peux personnaliser le menu des popups de chaque ligne si tu le veux, en utilisant le delegate tableView:willDisplayCell:forTableColumn:row:.
.
A une prochaine