Supprimer une ligne dans NSOutlineView avec compatibilité 10.6
Bonjour à tous !
Je suis entrain de réaliser une application compatible 10.6 et je me sers de NSOutlineView. Je voudrais supprimer une ligne et seulement réactualiser la partie correspondante.
Si je fais un reloadData complet, tous les noeuds étendus se ferment et si l'utilisateur doit supprimer une nouvelle ligne, il doit à nouceau ouvrir les noeuds correspondants.
Je ne me sers ni de Core Data, ni d'un NSTreeController, je ne me base uniquement que sur le datasource.
J'ai un problème pour supprimer une ligne (removeItemsAtIndexes:InParent:WithAnimation n'est pas disponible pour 10.6). J'ai beau essayer de faire un reloadDataForRowIndexes:columnIndexes, reloadItem, reloadItem:expandChild, la table ne supprime pas la ligne...
Comment faisait on sur 10.6 pour supprimer une ligne ?
Réponses
- mémoriser les noe“uds ouverts
- faire le reloadData
- rouvrir les noe“uds mémorisés
J'ai fait ce genre de choses du temps où setAutosaveExpandedItems: n'existait pas.
J'ai mis cette valeur à YES mais lorsque je fais un reloadData, les noeuds se referment...
D'après la documentation, il faut que je choisisse une variable pour autosaveName et implémenter les sélecteurs outlineView:itemForPersistentObject: et outlineView:persistentObjectForItem:.
Je ne comprends pas trop ce que je dois implémenter dans ces méthodes. Pouvez-vous m'éclairer ?
Je ne sais pas, je n'ai jamais utilisé ces méthodes.
http://lists.apple.com/archives/cocoa-dev/2008/Jun/msg02685.html
http://forum.cocoacafe.fr/topic/1342-resolu-outlineview-et-sauvegarde-des-items-deplies-ou-plies/
Ca n'a pas l'air simple ...
Vous voulez dire qu'un appel à setAutosaveExpandedItems devrait suffir ?
Bonjour,
Tu as une solution similaire voir ici http://www.gibbston.net/?p=4