Custom view / mouse event et le controller

pit-le-rouge

Membre confirmé
16 Novembre 2001
69
0
J'ai créé une custom view dans laquelle je peux afficher des images. Jusqu'ici rien de bien compliqué.
Il s'agit d'une petit application mais je tiens à respecter le fameux Model-View-Controller.
Lorsque je clique sur ma view, je peux détecter le mouse event et savoir à quel endroit il s'est produit. Parfait.
Mais cela se passe au niveau de ma view....
Et je veux faire savoir à mon controller que l'utilisateur à cliquer et ou il a cliquer !
D'ou ma question: comment ?
J'ai pensé utiliser les Notifications. Mais j'ai peur que ce soit un peu lent.
Qu'en pensez-vous ? Avez-vous une autre technique ?
 
Au lieu d'une notification, tu peux utiliser le système de délégation...

Il faut que tu implémentes dans ta classe NSView personnalisée une méthode d'enregistrement d'une "cible" pour la délégation (ex : - (void)setTarget:(id)objet andAction:(SEL)selecteur).
Cette méthode alimente 2 variables de ta classe qui sont (dans le .h) :
id objetCible; et
SEL selecteurCible;
Dans la méthode d'initialisation de ta NSView, n'oublie pas de mettre à nil ces 2 variables.
Enfin dans la méthode setTarget:andAction:, tu fais juste un :
objetCible=objet; et
selecteurCible=selecteur;

Ensuite, dans ta classe NSView, dans la méthode de gestion de la souris, tu envoies un message au "délégué" qui se sera fait connaitre (objetCible et selecteurCible sont non nil) via la précédente méthode (par un [objetCible performSelector:@selector(selecteurCible)];).

Bien entendu, ta classe controleur se sera inscrite comme délégué (dans son awakeFromNib par exemple) en faisant [taNSView setTarget:self andAction::@selector(gestionSouris)]; en supposant que la méthode que tu dois exécuter dans ton controleur est gestionSouris.

.
 
Oups, j'ai été très grossier !
J'ai oublié de te remercier Brunor !
Voilà, c'est fait.
Et encore merci pour une réponse aussi bien documentée !