TableView et NSPopUpButtonCell

mac_manumac_manu Membre
01:33 modifié dans API AppKit #1
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?:

Réponses

  • BruBru Membre
    01:33 modifié #2
    Un tableView ne contient qu'un seul NSPopUpButtonCell par colonne. C'est ce popUpButtonCell qui sera affiché de ligne en ligne dans le tableView.
    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 :
    [[[tableView tableColumnWithIdentifier:@"col3"] dataCell] addItemsWithTitles:[NSArray arrayWithObjects:@"ligne1", @"ligne2", @"ligne3", nil]];
    


    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:.

    .
  • mac_manumac_manu Membre
    01:33 modifié #3
    Merci Bru, maintenant, je peux aller de l'avant, j'ai pigé le principe. Et dire que ça faisait des heures que je tournais en rond... Vive les conseils des pros !! o:)

    A une prochaine  ;)
Connectez-vous ou Inscrivez-vous pour répondre.