Ce forum est en partie financé par l’affichage de publicités. Merci de désactiver votre bloqueur de publicités pour nous permettre de continuer à fournir ce service.

Custom view / mouse event et le controller

Discussion dans 'Développement Mac' créé par pit-le-rouge, 12 Juin 2003.

  1. pit-le-rouge

    pit-le-rouge Membre junior

    Inscrit:
    16 Novembre 2001
    Messages:
    69
    J'aime reçus:
    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 ?
     
  2. brunor

    brunor Nouveau membre

    Inscrit:
    18 Mars 2003
    Messages:
    9
    J'aime reçus:
    0
    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:mad: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::mad:selector(gestionSouris)]; en supposant que la méthode que tu dois exécuter dans ton controleur est gestionSouris.

    .
     
  3. pit-le-rouge

    pit-le-rouge Membre junior

    Inscrit:
    16 Novembre 2001
    Messages:
    69
    J'aime reçus:
    0
    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 !
     
Chargement...