NSTableView DataSource et Delegate

skimpyskimpy Membre
février 2007 modifié dans API AppKit #1
Bonjour,

Dans le chapitre 5 de Cocoa par la pratique, l'auteur initie au fonctionnement des TableViews. Dans l'exemple, l'interface est composée d'une TableView et d'un contrôleur (AppController) qui fait office de delegate et de datasource.
Je me posais la question suivante :
si l'interface était composée de 2 TableViews, faudrait-il créer un autre contrôleur qui servirait de datasource et delegate ? Si non y'a-t'il un moyen d'identifier une TableView (par exemple dans les 2 méthodes suivantes du datasource - je n'ai pas trouvé le moyen de nommer une TableView contrairement aux colonnes) ?

<br />- (int)numberOfRowsInTableView:(NSTableView *)aTableView;<br />- (id)tableView:(NSTableView *)aTableView<br />			    objectValueForTableColumn:(NSTableColumn *)aTableColumn<br />				row:(int)rowIndex;<br />


Comment faites-vous et quelles sont vos recommandations à  ce sujet ?

Merci.

Réponses

  • skimpyskimpy Membre
    23:27 modifié #2
    Est-ce qu'il ne faudrait pas jouer avec l'élément Tag ? [tableView tag] ?

    Par exemple :
    <br />switch([tableView tag])<br />{<br />&nbsp; &nbsp; case 0 :<br />&nbsp; &nbsp; // Code pour la tableView avec tag = 0<br />&nbsp; &nbsp; case 1 :<br />&nbsp; &nbsp; // Code pour la tableView avec tag = 1<br />&nbsp; &nbsp; default :<br />}<br />
    
  • BruBru Membre
    23:27 modifié #3
    tag est effectivement un moyen de différencier les NSTableView entre eux.
    Mais il existe une autre méthode :
    <br />- (int)numberOfRowsInTableView:(NSTableView *)aTableView<br />{<br />&nbsp;  if (aTableView==outletTable1)<br />&nbsp;  {<br />&nbsp; &nbsp; &nbsp; // retourner le nombre de lignes de la table 1<br />&nbsp;  }<br />&nbsp;  else if (aTableView==outletTable2)<br />&nbsp;  {<br />&nbsp; &nbsp; &nbsp; // retourner le nombre de lignes de la table 2<br />&nbsp;  }<br />}<br /><br />- (id)tableView:(NSTableView *)aTableView<br />			&nbsp; &nbsp; objectValueForTableColumn:(NSTableColumn *)aTableColumn<br />				row:(int)rowIndex<br />&nbsp;  if (aTableView==outletTable1)<br />&nbsp;  {<br />&nbsp; &nbsp; &nbsp; // retourner le contenu de la cellule pour la table 1<br />&nbsp;  }<br />&nbsp;  else if (aTableView==outletTable2)<br />&nbsp;  {<br />&nbsp; &nbsp; &nbsp; // retourner le contenu de la cellule pour la table 1<br />&nbsp;  }<br />}<br />
    

    sachant que outletTable1 et outletTable1 sont les 2 outlets qui lient contrôleur et NSTableView.

    .
  • skimpyskimpy Membre
    23:27 modifié #4
    Merci Bru ... j'ai essayé les 2 méthodes (qui fonctionnent bien sûr) et je pense que ta solution est sûrement plus claire et plus explicite (si l'outlet de la tableview est bien nommé).
Connectez-vous ou Inscrivez-vous pour répondre.