Respostas:
Ei, Namratha, Se você está perguntando sobre como mudar o texto e o estado habilitado / desabilitado de um UIButton, isso pode ser feito facilmente da seguinte maneira;
[myButton setTitle:@"Normal State Title" forState:UIControlStateNormal]; // To set the title
[myButton setEnabled:NO]; // To toggle enabled / disabled
Se você criou os botões no Interface Builder e deseja acessá-los em código, pode aproveitar o fato de que eles são passados como um argumento para as IBAction
chamadas:
- (IBAction) triggerActionWithSender: (id) sender;
Isso pode ser vinculado ao botão e você obterá o botão no sender
argumento quando a ação for disparada. Se isso não for suficiente (porque você precisa acessar os botões em outro lugar que não nas ações), declare uma saída para o botão:
@property(retain) IBOutlet UIButton *someButton;
Então é possível vincular o botão do IB ao controlador, o código de carregamento do NIB definirá o valor da propriedade ao carregar a interface.
[myButton setTitle: @"myTitle" forState: UIControlStateNormal];
Use UIControlStateNormal
para definir o seu título.
Existem alguns estados que os botões da IU fornecem, você pode dar uma olhada:
[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];
Se alguém, que está procurando uma solução em Swift, desembarcasse aqui, seria:
myButton.isEnabled = false // disables
myButton.setTitle("myTitle", for: .normal) // sets text
Documentação: isEnabled , setTitle .
Código mais antigo:
myButton.enabled = false // disables
myButton.setTitle("myTitle", forState: UIControlState.Normal) // sets text
Para alterar o título do botão:
[mybtn setTitle:@"My Button" forState:UIControlStateNormal];
[mybtn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
Para desativar:
[mybtn setEnabled:NO];
No Swift 3, você pode simplesmente alterar o título de um botão:
button.setTitle("Title", for: .normal)
e você desativa o botão:
button.isEnabled = false
.normal
é o mesmo UIControlState.normal
porque o tipo é inferido.
Se você deseja alterar o título como uma resposta ao toque, pode tentar isso dentro do método IBAction do botão em seu delegado do controlador de visualização. Isso ativa e desativa o bate-papo por voz. A configuração do chat de voz não é abordada aqui!
- (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 é específico para chat de voz, é claro, mas você pode usar sua própria propriedade booleana local para controlar o switch.
SWIFT 4 com extensão
conjunto:
// 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)
}
}
E use:
yourBtn.setAllStatesTitle("btn title")