J'ai une IBAction connectée à un bouton dans mon Interface Builder.
Est-il possible de modifier le texte du bouton (en IB) depuis mon code pendant l'exécution?
Si vous avez un bouton lié à une action dans votre code, vous pouvez modifier le titre sans variable d'instance.
Par exemple, si le bouton est défini sur cette action:
-(IBAction)startSomething:(id)sender;
Vous pouvez simplement le faire dans la méthode:
-(IBAction)startSomething:(id)sender {
[sender setTitle:@"Hello" forState:UIControlStateNormal];
}
Ou si vous souhaitez basculer le nom du bouton, vous pouvez créer un BOOL
nommé "buttonToggled" (par exemple), et basculer le nom de cette façon:
-(IBAction)toggleButton:(id)sender {
if (!buttonToggled) {
[sender setTitle:@"Something" forState:UIControlStateNormal];
buttonToggled = YES;
}
else {
[sender setTitle:@"Different" forState:UIControlStateNormal];
buttonToggled = NO;
}
}
UIButton *myButton;
[myButton setTitle:@"My Title" forState:UIControlStateNormal];
[myButton setTitle:@"My Selected Title" forState:UIControlStateSelected];
Oui. Il existe une méthode sur UIButton -setTitle:forState:
Utiliser ça.
[myButton setTitle:@"Play" forState:UIControlStateNormal];
Une autre façon de basculer:
- (IBAction)signOnClick:(id)sender
{
if ([_signOnButton.titleLabel.text isEqualToString:@"Sign off"])
{
[sender setTitle:@"Sign on" forState:UIControlStateNormal];
}
else
{
[sender setTitle:@"Sign off" forState:UIControlStateNormal];
}
}
myapp.h
{
UIButton *myButton;
}
@property (nonatomic,retain)IBoutlet UIButton *myButton;
myapp.m
@synthesize myButton;
-(IBACtion)buttonTitle{
[myButton setTitle:@"Play" forState:UIControlStateNormal];
}
Il n'est pas nécessaire d'ajouter si {} else {} contrôle le flux. Initialisez les textes des boutons pour différents états sur le constructeur View ou ViewController:
[btnCheckButton setTitle: @ "Normal" forState: UIControlStateNormal]; [btnCheckButton setTitle: @ "Selected" forState: UIControlStateSelected];
Basculez ensuite l'état du bouton sur Sélectionné:
[btnCheckButton setSelected: YES];
Basculez ensuite l'état du bouton sur Normal:
[btnCheckButton setSelected: NO];