Icône dans une NSTableView

VeillardVeillard Membre
15:19 modifié dans API AppKit #1
Hello,

Je suis en train de me prendre le melon pour insérer une icône dans une tableView. Je sais que c'est basique mais j'ai vu plein de choses contradictoires dans les docs.

J'ai fait ceci :

- (void)tableView:(NSTableView *)myTableView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)myTableColumn row:(int)row<br />{<br />		if (...)<br /> 			[cell setImage:[NSImage imageNamed:@&quot;image&quot;]];<br />}<br />


et... rien !

Réponses

  • fouffouf Membre
    15:19 modifié #2
    As-tu mis un NSImageCell dans le nib pour cette cell ? ::)
  • VeillardVeillard Membre
    15:19 modifié #3
    Euh non  :o
    Ca ne se dépose que sur l'en tête de la colonne. Je cherche à  mettre des icônes à  la place du texte dans les rows...

    Au fait, joli ton avatar  :o
  • wiskywisky Membre
    août 2005 modifié #4
    Dans IB ajoute des colonnes dans ta tableview et glisse dans ces colonne des imagecell et là  boom ça marche.

    Pour ma part j'ai ajouter les images dans la datasource. Il la traite trés bien mais ça fait des traitements en plus.

    <edit>
    dans la datasource j'ai ajouter l'image à  l'identifiant "image" et ma colonne contenant les NSImageViewCell à  pour identifiant "image"
    </edit>
  • muqaddarmuqaddar Administrateur
    15:19 modifié #5
    dans 1124461870:

    Hello,

    Je suis en train de me prendre le melon pour insérer une icône dans une tableView. Je sais que c'est basique mais j'ai vu plein de choses contradictoires dans les docs.

    J'ai fait ceci :

    - (void)tableView:(NSTableView *)myTableView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)myTableColumn row:(int)row<br />{<br />		if (...)<br /> 			[cell setImage:[NSImage imageNamed:@&quot;image&quot;]];<br />}<br />
    


    et... rien !


    Normalement, il suffit de bien mettre une NSImageCell ds la colonne ds IB. Ensuite, c'est la méthode :
    - (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)rowIndex

    dans laquelle tu dois retourner un objet NSImage (pour cette colonne).
  • VeillardVeillard Membre
    15:19 modifié #6
    Ca marche (à  moitié) si je fais :
    - (id)tableView:(NSTableView *)myTableView objectValueForTableColumn:(NSTableColumn *)myTableColumn row:(int)rowIndex<br />{<br />	NSString *identifier = [myTableColumn identifier];<br />	Catalogue *catalogue = [_inventaire objectAtIndex:rowIndex];<br />	if ([[myTableColumn identifier] isEqual:@&quot;type&quot;])<br />	&nbsp; &nbsp;  return [NSImage imageNamed:@&quot;image_1&quot;];<br />}
    


    J'ai bien les icônes affichées. Mais quand je fais :
    - (id)tableView:(NSTableView *)myTableView objectValueForTableColumn:(NSTableColumn *)myTableColumn row:(int)rowIndex<br />{<br />	NSString *identifier = [myTableColumn identifier];<br />	Catalogue *catalogue = [_inventaire objectAtIndex:rowIndex];<br />	if ([[myTableColumn identifier] isEqual:@&quot;type&quot;])<br />	{<br />		if ([[catalogue valueForKey:identifier] intValue] == 1)<br />			return [NSImage imageNamed:@&quot;image_1&quot;];<br /><br />		else if ([[catalogue valueForKey:identifier] intValue] == 2)<br />			return [NSImage imageNamed:@&quot;image_2&quot;];<br />	<br />		else if ([[catalogue valueForKey:identifier] intValue] == 3)<br />			return [NSImage imageNamed:@&quot;image_3&quot;];<br />	<br />		else if ([[catalogue valueForKey:identifier] intValue] == 4)<br />			return [NSImage imageNamed:@&quot;image_4&quot;];<br />	}<br />}
    


    J'ai
    NSImageCell's object value must be an NSImage.


    A votre avis comment faire. J'ai tout essayé  :crackboom:-
  • Eddy58Eddy58 Membre
    15:19 modifié #7
    Si tu fais un log ça donne quoi ? ???
    [tt]
    NSLog(@value:%i,[[catalogue valueForKey:identifier] intValue]);
    [/tt]
  • VeillardVeillard Membre
    15:19 modifié #8
    J'ai trouvé !
    Il faut retourner obligatoirement une NSImage quitte à  faire une image "blanche" si on ne doit rien voir apparaà®tre.

    Merci à  tous pour votre dévouement  o:)
Connectez-vous ou Inscrivez-vous pour répondre.