Как вы меняете текст кнопки и отключите кнопку в iOS?изменить текст кнопки и отключить кнопку в iOS
ответ
Hey Namratha, Если вы хотите изменить текст и включить/отключить состояние 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 к контроллеру, СИБ загрузки код будет устанавливать значение свойства при загрузке интерфейса.
Предполагая, что кнопка является UIButton
:
UIButton *button = …;
[button setEnabled:NO]; // disables
[button setTitle:@"Foo" forState:UIControlStateNormal]; // sets text
Смотрите документацию для UIButton
.
[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];
Я отправился в +1 к этому сообщению, но решил не делать этого. [self.eraseButton setTitle: @ "Стереть" forState: UIControlStateDisabled]; Это не уменьшает кнопку. Он ничего не делает, если у вас уже есть setEnable: как нет. – coolcool1994
Если кто-то, кто ищет решения в Swift, высадились здесь, было бы:
myButton.enabled = false // disables
myButton.setTitle("myTitle", forState: UIControlState.Normal) // sets text
Изменение названия кнопки:
[mybtn setTitle:@"My Button" forState:UIControlStateNormal];
[mybtn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
Для Disable:
[mybtn setEnabled:NO];
Если вы хотите изменить заголовок как ответ на постукивание, вы можете попробовать это внутри метода 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];
}
}
голосовой чат специфичен для голосового чата, конечно, но вы можете использовать OW локального логическое свойство для управления коммутатором.
В Swift 3, вы можете просто изменить название кнопки по:
button.setTitle("Title", for: .normal)
и отключить кнопку с помощью:
button.isEnabled = false
.normal
такого же, как UIControlState.normal
, поскольку типа является случайны.
Что мы должны использовать, если это кнопка действия? –
Спасибо! У меня есть UIButtons в моем приложении, но я нигде не упоминал их в коде. Я использовал конструктор интерфейса для регистрации механизма целевого действия (с этой целью у меня есть несколько методов IBAction для обработки щелчков кнопок), так как я могу получить доступ к кнопкам? – Namratha
Как раз сейчас я понял, что редактировал ваш ответ, Муннетлеке, а не мой :) Надеюсь, с тобой все в порядке. – zoul
Просто добавьте это, если вы хотите, чтобы свойство @ было объявлено для вас. В XCode 4 нажмите клавишу CTRL, нажмите кнопку, а затем перетащите указатель мыши в соответствующий файл .h. Появится диалоговое окно с запросом на имя свойства. Тогда вуаля у вас будет свойство для вас использовать в вашем коде! – milesmeow