NSTableView: Différence entre willDisplayCell et objectValueForTableColumn

MattcadamMattcadam Membre
00:52 modifié dans API AppKit #1
Bonjour,

Ca fait un moment que je suis sur la personnalisation de mon NSTableView et il y a un truc que je ne comprends toujours pas.

Les données à  afficher sont de type "Operation". Une "Operation" contient plusieurs champs (nom, somme, date, image ,etc). Dans un NSMutableArray (nommé data) j'ai plusieurs Operations.

Actuellement pour afficher mes données, je fais dans mon datasource de ma tableview :
- (id) tableView:(NSTableView*) tableView objectValueForTableColumn:(NSTableColumn*) tableColumn row:(int)row <br />{<br />&nbsp; &nbsp; &nbsp; return [data objectAtIndex:row];//Ce qui renvoie un object de type &quot;Operation&quot;<br />}<br /><br />


Ensuite dans une custom NSTextFieldCell, je récupére les infos à  mettre en forme à  l'aide de

<br />NSString* nomdeMonOperation = [[self objectValue] valueForKey:@&quot;nomDeMonParametre&quot;];<br />


Ceci marche, d'où ma question qui est :
Quelle est la différence entre les deux méthodes suivante :
– tableView:willDisplayCell:forTableColumn:row:
et
- tableView:objectValueForTableColumn:row:

Réponses

  • FloFlo Membre
    mai 2009 modifié #2

    - tableView:objectValueForTableColumn:row:


    Te permet de spécifier quel item associer à  chaque ligne de ta tableView et pour chaque colonne.


    tableView:willDisplayCell:forTableColumn:row:


    Te permet de spécifier les sous-classes de NSCell que doit utiliser la tableView pour chaque ligne et chaque colonne.

    En gros la première méthode fait partie du "Data Source Porotocol" et permet de fournir les objets de la couche "model". La deuxième te permet de personnaliser les NSCell(couche "vue") et donc l'affichage de la tableView.
  • MattcadamMattcadam Membre
    00:52 modifié #3
    ok. Merci
Connectez-vous ou Inscrivez-vous pour répondre.