Appel de méthode
Rocou
Membre
J'ai défini une méthode IBAction dans mon controleur qui se déclenche suite à un clic sur un NSPopUpButton. Tout fonctionne bien.
Néanmoins, j'aimerais également appeler cette méthode dans le code de ma vue (dans rightMouseDown).
Comment faire?
J'ai essayé:
[appControlleur maMethode];
ça ne passe pas à la compilation ("appControlleur non défini").
de déclarer un autre outlet sur le NSPopUpButton dans le fichier.h de ma vue et de redéfinir la méthode (copier-coller) dans le code de ma vue.
Plantage de l'application.
Néanmoins, j'aimerais également appeler cette méthode dans le code de ma vue (dans rightMouseDown).
Comment faire?
J'ai essayé:
[appControlleur maMethode];
ça ne passe pas à la compilation ("appControlleur non défini").
de déclarer un autre outlet sur le NSPopUpButton dans le fichier.h de ma vue et de redéfinir la méthode (copier-coller) dans le code de ma vue.
Plantage de l'application.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Et le principe du MVC hein ?
La vue n'a pas à connaà®tre le contrôleur !
D'abord, on suppose que le right clic sur la vue sert à autre chose qu'à montrer un menu contextuel (fonction standard) sinon le problème est résolu
Reste donc le cas où on veut définir une action spéciale déclenchée par un right clic.
Dans la vue on va définir deux variables:
id target;
SEL rightAction;
+ les méthodes qui vont bien.
Dans le contrôleur initialiser cette action:
Dans mavue pou right clic faire:
Ne reste plus qu'à implémenter la méthode vueRightAction dans le contrôleur.
Enfin au final ta vue connaà®t le contrôleur, elle sais juste pas que c'est un contrôleur.
C'est bien ça, ça va m'aider à pas mal de truc. Pour la petit info je viens de JAVA et tout est Typé dans JAVA, j'ai donc du mal avec id :P
merci mpergand mais en fait, ce n'est pas tout à fait cela. Du code dans le rightMouseDown doit s'exécuter avant de déclencher cette "action spéciale".
Et alors, où est le problème ?
Bien que ne sachant pas ce que fait cette méthode, j'ai le pressentiment qu'elle devrait se trouver dans la vue ...
Car du coup plus de prob
C'est bien mon sentiment. Mais dans ce cas, a quoi sert un contrôleur?
Comme je le dis dans un autre fil, toute mon application est liée à ma vue, dès lors, je me demande à quoi sert ce fichu contrôleur
En fait, la vue n'a pas à dire au controller fait ci fait ça ...
Elle délègue, quand l'utilisateur clique sur la vue, celle-ci informe le contrôleur.
Ici tu peux utiliser NSObject, ça marche aussi bien.
Si tu connais bien java, alors tu seras d'accord avec moi pour dire que ObjectiveC, c'est un peu bricolo par moments
Comment?
Si cette méthode n'agit que sur des paramètres de la vue, alors elle doit être dans la vue.
Le contrôleur, lui, sert de liaison entre la vue et des éléments extérieurs à cette vue.
Et bien le right clic provoque l'affichage d'un NSPanel qui va contenir des données de la vue.
L'utilisateur peut agir sur ces données (les modifier ou en ajouter) qui repartent mettre à jour la vue.
Alors je me pose la question: Qui doit contenir le code gérant ce NSPanel? Un contrôleur ou la vue?
Dans ce cas et sans l'ombre d'une hésitation: le contrôleur.