Odpowiedzi:
Hej Namratha, jeśli pytasz o zmianę tekstu i stan włączonego / wyłączonego przycisku UIButton, można to zrobić dość łatwo w następujący sposób;
[myButton setTitle:@"Normal State Title" forState:UIControlStateNormal]; // To set the title
[myButton setEnabled:NO]; // To toggle enabled / disabled
Jeśli utworzyłeś przyciski w Interface Builder i chcesz uzyskać do nich dostęp w kodzie, możesz wykorzystać fakt, że są one przekazywane jako argument do IBAction
wywołań:
- (IBAction) triggerActionWithSender: (id) sender;
Może to być powiązane z przyciskiem, a przycisk zostanie wyświetlony w sender
argumencie po uruchomieniu akcji. Jeśli to nie wystarczy (ponieważ potrzebujesz dostępu do przycisków w innym miejscu niż w akcjach), zadeklaruj gniazdko dla przycisku:
@property(retain) IBOutlet UIButton *someButton;
Wtedy możliwe jest powiązanie przycisku w IB ze sterownikiem, kod ładujący NIB ustawi wartość właściwości podczas ładowania interfejsu.
[myButton setTitle: @"myTitle" forState: UIControlStateNormal];
Użyj, UIControlStateNormal
aby ustawić swój tytuł.
Istnieje kilka stanów, które zapewniają przyciski UI, możesz rzucić okiem:
[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];
Jeśli ktoś, kto szuka rozwiązania w Swift, wylądowałby tutaj, byłoby to:
myButton.isEnabled = false // disables
myButton.setTitle("myTitle", for: .normal) // sets text
Dokumentacja: isEnabled , setTitle .
Starszy kod:
myButton.enabled = false // disables
myButton.setTitle("myTitle", forState: UIControlState.Normal) // sets text
Aby zmienić tytuł przycisku:
[mybtn setTitle:@"My Button" forState:UIControlStateNormal];
[mybtn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
Do wyłączenia:
[mybtn setEnabled:NO];
W Swift 3 możesz po prostu zmienić tytuł przycisku poprzez:
button.setTitle("Title", for: .normal)
i wyłączasz przycisk poprzez:
button.isEnabled = false
.normal
jest taki sam, jak w UIControlState.normal
przypadku wywnioskowania typu.
SWIFT 4 z rozszerzeniem
zestaw:
// 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)
}
}
I użyć:
yourBtn.setAllStatesTitle("btn title")
Jeśli chcesz zmienić tytuł w odpowiedzi na dotknięcie, możesz to wypróbować w metodzie IBAction przycisku w delegacie kontrolera widoku. Powoduje to włączanie i wyłączanie czatu głosowego. Nie omówiono tutaj konfiguracji czatu głosowego!
- (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 jest oczywiście specyficzny dla czatu głosowego, ale możesz użyć własnej lokalnej właściwości boolowskiej do sterowania przełącznikiem.