[BWToolkit] toggleCollapse: par le code
Flo
Membre
Bonjour à tous,
dans BWToolkit il y a une NSSplitView spécialisée qui s'appelle BWSplitView. L'interface contient une méthode (IBAction) toggleCollapse: (id)sender qui permet de "collapser" une des vues.
J'ai essayé d'appeler cette méthode par le code (self corresponds à l'appDelegate) :
Et la boom, le framework essaye de m'appeler les méthodes (NSCell *) cell et (void) setState: (NSInteger)value sur mon appDelegate.
Je me suis dit, oula mais il est en train de prendre mon appDelegate pour un bouton là ???
Je suis allé voir un peu le code de la méthode toggleCollapse: du framework et effectivement il y a un truc du style :
J'imagine que c'est pour modifier l'apparence du bouton sensé avoir déclenché l'appelle du collapse en fonction de l'état de la vue.
Du coup j'ai implémenté les méthodes (NSCell *) cel et (void) setState: (NSInteger)value dans mon appDelegate qui renvoie nil et ne font rien.
ça marche mais je trouve ça un petit peu crade quand même... Est-ce que quelqu'un a déjà été confronté à ce problème et aurait trouvé une solution plus élégante ?
Merci d'avance
dans BWToolkit il y a une NSSplitView spécialisée qui s'appelle BWSplitView. L'interface contient une méthode (IBAction) toggleCollapse: (id)sender qui permet de "collapser" une des vues.
J'ai essayé d'appeler cette méthode par le code (self corresponds à l'appDelegate) :
<br />[self.leftSplitView toggleCollapse: self];<br />
Et la boom, le framework essaye de m'appeler les méthodes (NSCell *) cell et (void) setState: (NSInteger)value sur mon appDelegate.
Je me suis dit, oula mais il est en train de prendre mon appDelegate pour un bouton là ???
Je suis allé voir un peu le code de la méthode toggleCollapse: du framework et effectivement il y a un truc du style :
<br />// Get a reference to the button and modify its behavior<br /> (IBAction)toggleCollapse:(id)sender<br />{<br /> ...<br /><br /> if ([self toggleCollapseButton] == nil)<br /> {<br /> [self setToggleCollapseButton:sender];<br /><br /> [[toggleCollapseButton cell] setHighlightsBy:NSPushInCellMask];<br /> [[toggleCollapseButton cell] setShowsStateBy:NSContentsCellMask];<br /> }<br /><br /> ....<br />}<br />
J'imagine que c'est pour modifier l'apparence du bouton sensé avoir déclenché l'appelle du collapse en fonction de l'état de la vue.
Du coup j'ai implémenté les méthodes (NSCell *) cel et (void) setState: (NSInteger)value dans mon appDelegate qui renvoie nil et ne font rien.
ça marche mais je trouve ça un petit peu crade quand même... Est-ce que quelqu'un a déjà été confronté à ce problème et aurait trouvé une solution plus élégante ?
Merci d'avance
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Merci Ali
Donc pour bien faire ils auraient dû indiquer le bon type pour ce paramètre sender (oui oui on n'est pas obligé de mettre "id" loin de là , si on met un type spécifique ça limitera juste l'IBAction à n'être connectée dans IB qu'aux types d'objets correspondants), mais bon, d'un autre côté à part dans mes rares projets où le sender était d'un type imposé, j'ai rarement vu des IBAction qui précisaient autre chose que id :P (Ou si on laisse ID il faut vérifier le type avant de tenter un appel de message dessus)