[Résolu]changer texte d'un bouton en cour d'utilisation
prepa75
Membre
Bonjour à tous,
je me posais un petit défi : changer le texte écrit sur un bouton durant l'utilisation de l'application...
je vous donne un exemple concret :
j'ai un bouton "commencer" qui comme son nom l'indique lance une opération. je souhaite que ce même bouton soit renommé "correction" une fois que l'on a cliqué dessus.
j'ai un peu bidouillé et j'en suis venu a créer un bouton vierge sur lequel j'y colle un label,et avec un NSString je renomme le bouton.
j'étais fier de ma trouvaille jusqu'a ce qu'il faille cliquer sur le dit bouton le label avait pris toute la place et je ne pouvais pas cliquer...
si quelqu'un a une idée je suis preneur.
je me posais un petit défi : changer le texte écrit sur un bouton durant l'utilisation de l'application...
je vous donne un exemple concret :
j'ai un bouton "commencer" qui comme son nom l'indique lance une opération. je souhaite que ce même bouton soit renommé "correction" une fois que l'on a cliqué dessus.
j'ai un peu bidouillé et j'en suis venu a créer un bouton vierge sur lequel j'y colle un label,et avec un NSString je renomme le bouton.
j'étais fier de ma trouvaille jusqu'a ce qu'il faille cliquer sur le dit bouton le label avait pris toute la place et je ne pouvais pas cliquer...
si quelqu'un a une idée je suis preneur.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Et voilou
voici mon code :
et ça ne marche pas car je n'arrive pas a conecter sous IB le bouton au pointeur textbutton.
ai-je fais une erreur de débutant?
j'ai essayer cette méthode mais ou est-ce que l'on paramètre le choix du texte?
comment on fait pour expliquer les conditions??
parsque le bouton reste toujours sur "commencer" , ce qui est logique...
Voici un exemple rapide, non testé :
Controller.h
Controller.m
Oui. Tu ne modifies pas la valeur de comptnbcoup. De plus, on le déclarerait plutôt avec un type BOOL.
Par ailleurs, le prototype de la méthode est forcément:
[tt]- (IBAction)changebutton:(id)sender[/tt]
Il n'y a pas de conditions. Certains boutons possèdent deux états: relâché (title) ou enfoncé (alternateTitle).
On fixe ces intitulés sous IB, palette Inspector, 1er onglet.
Non, ce n'est pas nécessaire. On possède déjà une référence vers le bouton cliqué par le paramètre sender transmis à l'action.
Par contre, il faudra transtyper sender. ( [tt][(NSButton*)sender sendTitle:@Correction];[/tt] )
merci ça marche nikel ^^
en fait comptnbcoup est incrémenté plus loin dans le code.concernant le type BOOL je suis en train de le books, je pense que j'ai compris je vais essayer de l'appliquer...
concernant altenativeTitle j'avais pas compris que c'étais lors du relachement du bouton.et dans ce cas là ça ne correspond pas à ce que je veux faire...mais c'est pas grave car j'ai compris en utilisant un PushButton donc c'est niquel...ptit à ptit je progresse^^
prochain défis : utiliser un Level Indicator...
Sauf que dans le cas de prepa75, c'est la déclaration de sa méthode [tt]- (void)changebutton:(NSString *)textbutton[/tt] qui pose problème : le code de cette méthode est bon... à condition que textbutton représente ton bouton, donc un NSButton*, et non pas représente un texte, donc un NSString* !
Après si tu veux transformer cette méthode en une IBAction pour pouvoir la connecter à ton bouton, et donc que par la même occasion il change de texte dès que tu cliques dessus, il suffit de remplacer le "void" par "IBAction" dans la déclaration de la méthode (en plus bien sûr d'avoir remplacé le NSString* par un NSButton*) pour que IB reconnaisse que c'est une IBAction et donc te propose de la connecter.
Si tu mets un NSButton* en paramètre, alors tu n'auras pas à faire le transtypage dont parle Céroce dans le message précédent, par contre IB ne te permettra de connecter ton action qu'à un NSButton (puisque tu as dit via la déclaration de ta méthode que le sender, que tu as appelé ici textbutton, doit être un NSButton).
Si tu mets "id" comme type de paramètre, comme le suggère Céroce, alors IB te permettra de connecter cette action à n'importe quel type de NSControl, pas que des NSButtons. Mais par contre du coup dans la méthode, il faudra faire le transtypage du coup, pour avoir le droit d'appeler les méthodes comme setTitle, qui sont des méthodes propres à NSButton... Donc autant indiquer tout de suite que le paramètre est de type NSButton
Donc peut-être que si tu choisis un mode de fonctionnement "toggle" de ton NSButton, le alternateTitle fait bien ce que tu attends
Disons que son exemple ne faisait pas intervenir d'action. Puis on pourrait même faire plus simple :
[tt]- (IBAction)myButtonAction:(NSButton*)aButton[/tt]
dans mon .h j'ai mis : IBOutlet NSButton *textbutton;
donc c'est bon non?
a priori tout va bien
par contre dites moi si je me trompe mais on ne peut pas attribuer 2 (IBAction) à un même bouton c'est ça??
parsque lorsque j'ouvre ue fenêtre déroulante je souhaiterai que le bouton "commencer" apparaisse et lorsque je clique sur commencer,le bouton "correction" apparait...j'ai réussi à le faire car j'ai mis le texte "commencer" dans l'IBAction de la fenêtre et le texte "correction" dans l'IBAction du boutton.
en effet je me demander bien à quoi servait tout ces choix qui étaient dans une langue inconnue :P
je pense qu'en essayant un peu tout je devrai trouver mon bonheur...