architecture d'une appli de drag & drop d'image
tethys
Membre
Bonjour,
Je débute sous cocoa et essaie de faire une petite appli de test basée sur le drag & drop,
mon architecture est la suivante :
une vue source (correspondant à une classe et qui gère le drag), une vue cible (une autre classe qui gère le drop), et une classe AppController qui possède une variable d'instance vueSource pour pouvoir y redessiner
ma vueCible devrait être assez indépendante car elle ne redessine que ce qu'elle reçoit sur elle-même,
j'ai crée un objet AppController sous IB, et ait affectée sa variable d'instance à la vue source physique sur ma fenêtre,
une fois le drop effectué dans ma VueCible, je souhaite en informer le controleur afin qu'elle redessine sur la vueSource,
une piste que j'ai commencée à mettre en oeuvre, est de rajouter une variable d'instance de type AppController dans ma vueCible:
je peux récuperer des choses dans mon controlleur, mais je pense que ce n'est pas le même objet que celui qui possède ma vueSource.
comment récuperer mon objet controlleur initial crée dans IB ?
je ne veux utiliser qu'un seul controleur..
(ainsi qu'une seule vueSource et qu'une seule vueCible)
je ne sais pas si je suis très clair mais je peux préciser si vous souhaitez,
Je débute sous cocoa et essaie de faire une petite appli de test basée sur le drag & drop,
mon architecture est la suivante :
une vue source (correspondant à une classe et qui gère le drag), une vue cible (une autre classe qui gère le drop), et une classe AppController qui possède une variable d'instance vueSource pour pouvoir y redessiner
<br />(IBoutlet) VueSource *vueSource<br />
ma vueCible devrait être assez indépendante car elle ne redessine que ce qu'elle reçoit sur elle-même,
j'ai crée un objet AppController sous IB, et ait affectée sa variable d'instance à la vue source physique sur ma fenêtre,
une fois le drop effectué dans ma VueCible, je souhaite en informer le controleur afin qu'elle redessine sur la vueSource,
une piste que j'ai commencée à mettre en oeuvre, est de rajouter une variable d'instance de type AppController dans ma vueCible:
<br />AppController *theController<br />
je peux récuperer des choses dans mon controlleur, mais je pense que ce n'est pas le même objet que celui qui possède ma vueSource.
comment récuperer mon objet controlleur initial crée dans IB ?
je ne veux utiliser qu'un seul controleur..
(ainsi qu'une seule vueSource et qu'une seule vueCible)
je ne sais pas si je suis très clair mais je peux préciser si vous souhaitez,
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Salut,
Si tu utilises:
- (void)dragImage:(NSImage *)anImage at:(NSPoint)imageLoc offset:(NSSize)mouseOffset event:(NSEvent *)theEvent pasteboard:(NSPasteboard *)pboard source:(id)sourceObject slideBack:(BOOL)slideBack
tu peux spécifier la vueSource.
Que tu peux récupérer dans la destination grace à NSDraggingInfo:
Si tu as vraiment besoin de ça, cela s'appelle un delegate, il te faudra aussi définir un protocole.
un exemple ici
Plus simplement, tu peux aussi utiliser les notifications, voir ICI
interessant pour récupérer la vue source !
mais je comptais en effet partir sur les delegate
ton lien est bien plus clair que ce que l'on trouve habituellement sur le sujet, et ça m'a bien aidé,
et après une bonne connexion dans IB, j'utilise bien le même objet,
merci !