Réponses:
Hey Namratha, Si vous demandez comment changer le texte et l'état activé / désactivé d'un UIButton, cela peut être fait assez facilement comme suit;
[myButton setTitle:@"Normal State Title" forState:UIControlStateNormal]; // To set the title
[myButton setEnabled:NO]; // To toggle enabled / disabled
Si vous avez créé les boutons dans Interface Builder et que vous souhaitez y accéder dans le code, vous pouvez profiter du fait qu'ils sont passés en argument aux IBAction
appels:
- (IBAction) triggerActionWithSender: (id) sender;
Cela peut être lié au bouton et vous obtiendrez le bouton dans l' sender
argument lorsque l'action est déclenchée. Si cela ne suffit pas (car vous devez accéder aux boutons ailleurs que dans les actions), déclarez une prise pour le bouton:
@property(retain) IBOutlet UIButton *someButton;
Ensuite, il est possible de lier le bouton dans IB au contrôleur, le code de chargement NIB définira la valeur de la propriété lors du chargement de l'interface.
[myButton setTitle: @"myTitle" forState: UIControlStateNormal];
Utilisez UIControlStateNormal
pour définir votre titre.
Il y a quelques états fournis par UIbuttons, vous pouvez jeter un œil:
[myButton setTitle: @"myTitle" forState: UIControlStateApplication];
[myButton setTitle: @"myTitle" forState: UIControlStateHighlighted];
[myButton setTitle: @"myTitle" forState: UIControlStateReserved];
[myButton setTitle: @"myTitle" forState: UIControlStateSelected];
[myButton setTitle: @"myTitle" forState: UIControlStateDisabled];
Si quelqu'un, qui cherche une solution à Swift, atterrissait ici, ce serait:
myButton.isEnabled = false // disables
myButton.setTitle("myTitle", for: .normal) // sets text
Documentation: isEnabled , setTitle .
Ancien code:
myButton.enabled = false // disables
myButton.setTitle("myTitle", forState: UIControlState.Normal) // sets text
Pour changer le titre du bouton:
[mybtn setTitle:@"My Button" forState:UIControlStateNormal];
[mybtn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
Pour désactiver:
[mybtn setEnabled:NO];
Dans Swift 3, vous pouvez simplement changer le titre d'un bouton en:
button.setTitle("Title", for: .normal)
et vous désactivez le bouton en:
button.isEnabled = false
.normal
est le même que UIControlState.normal
parce que le type est déduit.
SWIFT 4 avec extension
ensemble:
// set button label for all states
extension UIButton {
public func setAllStatesTitle(_ newTitle: String){
self.setTitle(newTitle, for: .normal)
self.setTitle(newTitle, for: .selected)
self.setTitle(newTitle, for: .disabled)
}
}
et utilise:
yourBtn.setAllStatesTitle("btn title")
Si vous souhaitez modifier le titre en réponse au fait d'être tapé, vous pouvez essayer ceci dans la méthode IBAction du bouton dans votre délégué de contrôleur de vue. Cela active et désactive un chat vocal. La configuration du chat vocal n'est pas couverte ici!
- (IBAction)startChat:(id)sender {
UIButton *chatButton = (UIButton*)sender;
if (!voiceChat.active) {
UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"Voice Chat"
message:@"Voice Chat will become live. Please be careful with feedback if your friend is nearby."
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action) {}];
[alert addAction:defaultAction];
[self presentViewController:alert animated:YES completion:nil];
[voiceChat start];
voiceChat.active = YES;
[chatButton setTitle:@"Stop Chat" forState:UIControlStateNormal];
}
else {
[voiceChat stop];
UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"Voice Chat"
message:@"Voice Chat is closed"
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action) {}];
[alert addAction:defaultAction];
[self presentViewController:alert animated:YES completion:nil];
voiceChat.active = NO;
[chatButton setTitle:@"Chat" forState:UIControlStateNormal];
}
}
voiceChat est bien sûr spécifique au chat vocal, mais vous pouvez utiliser votre propriété booléenne locale pour contrôler le commutateur.