Effectuer une IBAction depuis un event mouseDown d'une custom nsview

syncsync Membre
01:34 modifié dans API AppKit #1
Bonjour,

Je chercher a activer une IBAction située sur mon controlleur principal suite a l'activation d'un événement mouseDown d'une cutom nsview.

Je mets un exemple à  votre disposition. Je suis sur que y a un truc tout bête, pour changer, a faire afin que l'action s'effectue mais je sèche. Dans cet exemple je voudrais modidier le contenu d'un nstextfield suite a un simple clic n'importe ou sur ma nsview personnalisée.

Je reste à  votre disposition pour de plus amples informations

Merci et bonne journée  :p

[Fichier joint supprimé par l'administrateur]

Réponses

  • mai 2007 modifié #2
    Salut,

    Tu as un controller qui est instancié au chargement du nib (première création) et le code de la vue suivant :
    <br />aController = [[Controller alloc] init];<br />
    


    et donc tu crée deux instances de la classe controller. Le controller défini dans Interface Builder n'est pas le même objet que celui du mouseDown: (tu peux comparer les adresses mémoire).

    Pour attribuer le bon pointeur aController dans la vue tu peux par exemple envoyer un message setController:self à  la vue dans la méthode awakeFromNib de la classe controller.

    Ceci dit j'ai un peu de mal à  voir ou tu veux en venir au final...
  • BruBru Membre
    01:34 modifié #3
    dans 1178459863:

    Je suis sur que y a un truc tout bête, pour changer, a faire afin que l'action s'effectue mais je sèche.


    Simple en effet...

    1. dans XCode, MyView.h : ajoute IBOutlet davant la décla de aController, puis sauvegarde le fichier :
    IBOutlet Controller* aController;
    


    2. dans XCode, MyView.m : supprime [tt]aController = [[Controller alloc] init];[/tt] dans la méthode initWithFrame.

    3. dans IB : recharge le MyView.h (fenêtre MainMenu.nib, onglet Classes, navigation vers MyView {NSObject>NSResponder>NSView>MyView}, clic droit et Read MyView.h).

    4. dans IB : tire une ligne entre MyView dans ta fenêtre et l'instance Controller dans MainMenu.nib., puis connecte à  l'outlet aController.

    5. Compile, teste, cherche à  comprendre, puis dis merci.

    .
  • syncsync Membre
    01:34 modifié #4
    Merci pour vos réponses. J'ai finalement changé un peu d'idée et résolu le problème de la manière suivante:

    - dans ma vue personnalisée, créé une méthode qui accepte le nom de l'action a effectuer sur le controlleur et le sender qui sera le controlleur puis rajouté une autre fonction qui réagis au clic et exécute la méthode du controller en récupérant l'aciotn et le sendeur original

    - donc dans mon contolleur au awakeFromNib j'appelle la méthode de ma vue personnalisée qui permet de définir l'action a effectuer et le sender qui sera self.

    Sais pas si j'ai été clair mais bon lol..

    Bonne journée
Connectez-vous ou Inscrivez-vous pour répondre.