Відповіді:
Привіт Намратха, якщо ви запитуєте про зміну тексту та ввімкнутий / вимкнений стан UIButton, це можна зробити досить легко, як описано нижче;
[myButton setTitle:@"Normal State Title" forState:UIControlStateNormal]; // To set the title
[myButton setEnabled:NO]; // To toggle enabled / disabled
Якщо ви створили кнопки в Interface Builder і хочете отримати доступ до них у коді, ви можете скористатися тим, що вони передаються як аргумент IBAction
викликам:
- (IBAction) triggerActionWithSender: (id) sender;
Це може бути прив’язане до кнопки, і ви отримаєте кнопку в sender
аргументі при запуску дії. Якщо цього недостатньо (оскільки вам потрібно отримати доступ до кнопок деінде, ніж в діях), оголосіть розетку для кнопки:
@property(retain) IBOutlet UIButton *someButton;
Тоді можливо прив'язати кнопку в IB до контролера, код завантаження NIB встановить значення властивості при завантаженні інтерфейсу.
[myButton setTitle: @"myTitle" forState: UIControlStateNormal];
Використовуйте, UIControlStateNormal
щоб встановити назву.
Є кілька станів, які надає UIbuttons, ви можете подивитися:
[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];
Якщо хтось, хто шукає рішення у Свіфті, приземлився тут, це було б:
myButton.isEnabled = false // disables
myButton.setTitle("myTitle", for: .normal) // sets text
Документація: isEnabled , setTitle .
Старіший код:
myButton.enabled = false // disables
myButton.setTitle("myTitle", forState: UIControlState.Normal) // sets text
Щоб змінити назву кнопки:
[mybtn setTitle:@"My Button" forState:UIControlStateNormal];
[mybtn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
Для відключення:
[mybtn setEnabled:NO];
У Swift 3 ви можете просто змінити назву кнопки:
button.setTitle("Title", for: .normal)
і ви відключите кнопку:
button.isEnabled = false
.normal
те саме, що UIControlState.normal
тому, що тип робиться для висновку.
Якщо ви хочете змінити заголовок як відповідь на натискання, ви можете спробувати це всередині методу IBAction кнопки у делегата контролера перегляду. Це вмикає та вимикає голосовий чат. Налаштування голосового чату тут не висвітлено!
- (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, звичайно, характерний для голосового чату, але ви можете використовувати своє власне локальне буле властивість для управління комутатором.
SWIFT 4 з розширенням
набір:
// 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)
}
}
і використовувати:
yourBtn.setAllStatesTitle("btn title")