Tri dans un tableau
olof
Membre
Bonjour tous,
j'ai parcouru plusieurs messages parlant de tri, mais rien qui me "convient"...
J'ai une simple NSTableView, avec deux colonnes. Mon but, faire du tri de la manière la plus simple. Dans IB, je vois que sur les objets NSTableColumn, on a les propriétés :
Sort Key
Sort Selector
Sort order
Super, me dis-je. J'ai donc renseigné le 'Sort Selector' pour mes deux colonnes :
Col1 : compareObjetCol1:
et Col2 : compareObjetCol2:
J'ai implémenté ces deux méthodes dans ma classe modèle qui représente une ligne du tableau.
C'est bien beau tout ça, mais il manque pas un lien entre mon controller (qui est la dataSource de la NSTableView) et mon objet qui représente une ligne ?
En tout cas, quand je clic sur un en-tête de colonne, y'a bien la petite flèche qui indique le sens du tri qui s'affiche. Mais par contre, le tri ne se fait pas.
J'ai du rater un truc tout bête, non ?
Merci !
Voilà le code de ma méthode de tri (mon objet qui représente une ligne du tableau est FGObjet) :
j'ai parcouru plusieurs messages parlant de tri, mais rien qui me "convient"...
J'ai une simple NSTableView, avec deux colonnes. Mon but, faire du tri de la manière la plus simple. Dans IB, je vois que sur les objets NSTableColumn, on a les propriétés :
Sort Key
Sort Selector
Sort order
Super, me dis-je. J'ai donc renseigné le 'Sort Selector' pour mes deux colonnes :
Col1 : compareObjetCol1:
et Col2 : compareObjetCol2:
J'ai implémenté ces deux méthodes dans ma classe modèle qui représente une ligne du tableau.
C'est bien beau tout ça, mais il manque pas un lien entre mon controller (qui est la dataSource de la NSTableView) et mon objet qui représente une ligne ?
En tout cas, quand je clic sur un en-tête de colonne, y'a bien la petite flèche qui indique le sens du tri qui s'affiche. Mais par contre, le tri ne se fait pas.
J'ai du rater un truc tout bête, non ?
Merci !
Voilà le code de ma méthode de tri (mon objet qui représente une ligne du tableau est FGObjet) :
<br />-(NSComparisonResult) compareObjetCol1:(FGObjet *)aObjet {<br /> return -[[aObjet colonne1] compare:[self colonne1]];<br />}<br />
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Par contre, je te demande pardon, mais je ne me souviens plus comment il faut faire pour savoir quelle colonne est sélectionnée et surtout comment afficher les flèches dans ces colonnes. Mais je pense que d'autres sur le forum sauront le faire
Pour apporter ma pierre à l'édifice, je te conseille d'aller lire cet article de CocoaDev ainsi que celui-là aussi, pour trier ta tableView.
Ok, alors dans ce cas, j'ai déjà implémenté la détéction du clic et le tri, mais il me manquait l'affichage de la flèche dans l'en-tête de la colonne. Alors je vais continuer sur cette voie... Zut, moi qui espérait trouver quelque chose de tout automatique
Merci !
Comme sort key, tu utilises colonne1.
Comme tu utilises compare:, pas besoin de mettre le selector (en fait il le mets dans le placeholder, donc c'est bon).
Et pour l'ordre, je présume que tu mets descending.
Et tout sera auto.
Mais ça implique que tu utilises les bindings, comme dit plus haut.
Ok, je reprends ma phrase, alors :
Zut, moi qui espérait trouver quelque chose de tout automatique, sans utiliser les bindings (ben ouais, j'ai déjà assez de peine sans :-\\)