Une arborescence

10:16 modifié dans API AppKit #1
Bonjour à tous,

J'aurai besoin d'une vue représentant une arborescence (comme celle présente dans xCode ou bien pour ceux qui connaissent Explorer sous Windows).
Un tel objet n'existant pas, je me suis dit que je pourrais utiliser une OutlineView avec des ButtonCells. Cela fonctionne (j'ai bien mon triangle pour ouvrir ou fermer un niveau, une icône et son texte associé).

Mais je trouve que c'est une gestion un peu lourde et cela me donne l'impression d'utiliser un marteau pilon pour écraser une mouche. Existe-t-il un moyen mieux adapté ?

Merci

Réponses

  • 10:16 modifié #2
    Il me semble qu'il existe un objet qui répond parfaitement à ta demande : NSOutlineView

    Voir : http://developer.apple.com/documentation/Cocoa/Conceptual/OutlineView/index.html#//apple_ref/doc/uid/10000023i  (catpure d'écran dans la section About pour voir tout de suite si c'est bien ce à quoi tu penses).
  • 10:16 modifié #3
    Project:Omega a également publié un tuto pour l'usage de cette classe (http://www.projectomega.org/article.php?lg=fr&php=tuts_objc3&p=1). Si tu en as compris le fonctionnement, tu verras qu'elle en réalité très simple à utiliser.

    PS: les triangles des NSOutlineView ne sont jamais que des NSButton ;)
  • 10:16 modifié #4
    Ok,  comme je le pensais dans mon premier message, il n'y a que la OutlineView. Au moins, je n'utilise pas un objet non adapté :)

    Par contre, existe-t-il un autre moyen que chaque cellule de la outline soit une image suivie d'un texte que l'utilisation d'un NSButton? J'ai regardé (peut-être mal) du côté de ImageCell, sans succès.
    Je vais paraà“tre tatillon, mais je trouve étrange d'utiliser un bouton pour juste afficher des infos. En fait, cela me gênerait de faire comme ceci, s'il existe une manière plus élégante :)
  • 10:16 modifié #5
    Quel est ton objectif avec le bouton? afficher une image et un texte l'un à côté de l'autre? Si c'est simplement ça, deux solutions: soit tu fais une colonne avec les images et une autre avec le texte, mais ça peut ne pas convenir car tu as dans ces cas deux colonnes; soit tu utilises la classe ImageAndTextCell dont tu peux trouver la source dans /Developer/Examples/AppKit/DragNDropOutlineView. Le texte se règle dans tableView:ObjectValue.... du datasource et pour l'image tu dois passer par tableView:willDisplayCell... du delegate.
  • nucleusnucleus Membre
    10:16 modifié #6
    Tu dois pouvoir aussi utiliser la NSBrowserCell...
Connectez-vous ou Inscrivez-vous pour répondre.