[Résolu]Drag & drop entre 2 NSTableView
UniX
Membre
Salut.
Ca fait 3 heures que je rame à comprendre le fonctionnement du drag & drop, particulièrement entre 2 NSTableView .... Â Je commence à avoir un sacré mal de tête, et en + j'embrouille tout ...
Quelqu'un connaitrait un exemple de drag & drop entre 2 tables d'une même window ?
Ca fait 3 heures que je rame à comprendre le fonctionnement du drag & drop, particulièrement entre 2 NSTableView .... Â Je commence à avoir un sacré mal de tête, et en + j'embrouille tout ...
Quelqu'un connaitrait un exemple de drag & drop entre 2 tables d'une même window ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
http://www.objective-cocoa.org/forum/index.php?topic=928.0
Après, si tu as des questions plus spécifiques...
+
Chacha
Bon, alors petit à petit je sors la tête du trou.
Je suis en train d'écrire la méthode (BOOL)tableView:(NSTableView *)tv writeRows:(NSArray*)rows toPasteboard:(NSPasteboard*)pb
D'ailleurs, je met le code :
Je pense avoir pigé ce qu'il y avait à faire, mais je n'arrive pas à voir comment remplir le dictionnaire. Il faut faire un setObject: forKey: pour chaque variable d'instance, c'est bien ça ? Mais comment j'obtient mon objet ?
On progresse, doucement certes, mais on progresse ....
Mais je sais pas comment acceder à mon tableau qui rempli la NSTableView. Dans mon code, c'est là ou j'ai mis "mon tableau". Il faut mettre quoi ?
Normalement, ça devrait être [tv dataSource];
ça marche avec ça ?
Sinon, tu es sous 10.4 ou sous 10.3 ? Sous 10.4 il ya des nouvelles fonctions sympa qui pourraient te permettre de simplifier ton code.
+
Chacha
J'ai mon drag qui marche, mais j'ai un petit problème pour le drop.
Bon, un petit problème pour le drop.
Lors du drag, j'ai encodé la tableau contenant les objets de la façon suivante :
ou lignesData est un NSData (celui que je place ensuite dans le pastboard), et lignesTableau est un NSMutableArray.
Pour le drop, je décode de la façon suivante :
Mais là j'ai le message d'erreur suivant :
J'ai vérifié dans le débugger, l'objet NSData au départ et à l'arrivée fait la même taille (711 bytes pour une ligne).
Messages typique quand on a encodé avec un Keyed archiver et désencodé avec un pas-Keyed unarchiver... comme c'est les cas ici.
remplace donc NSUnarchiver par NSKeyedUnarchiver
+
Chacha
PS :chapeau pour t'être dépatouillé avec les drag'n drop ! c'est pas évident.
J'ai réussi par me sortir du drag & drop (je suis content :adios!:), mais grâce à beaucoup d'aide et de temps ....!