Respuestas:
Hola Namratha, si estás preguntando acerca de cambiar el texto y el estado habilitado / deshabilitado de un UIButton, puedes hacerlo con bastante facilidad de la siguiente manera;
[myButton setTitle:@"Normal State Title" forState:UIControlStateNormal]; // To set the title
[myButton setEnabled:NO]; // To toggle enabled / disabled
Si ha creado los botones en Interface Builder y desea acceder a ellos en código, puede aprovechar el hecho de que se pasan como argumento a las IBAction
llamadas:
- (IBAction) triggerActionWithSender: (id) sender;
Esto se puede vincular al botón y obtendrá el botón en el sender
argumento cuando se active la acción. Si eso no es suficiente (porque necesita acceder a los botones en otro lugar que no sea en las acciones), declare una salida para el botón:
@property(retain) IBOutlet UIButton *someButton;
Entonces es posible vincular el botón en IB al controlador, el código de carga NIB establecerá el valor de la propiedad al cargar la interfaz.
[myButton setTitle: @"myTitle" forState: UIControlStateNormal];
Úselo UIControlStateNormal
para establecer su título.
Hay un par de estados que proporcionan los botones de interfaz de usuario, puede echar un vistazo:
[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 alguien, que está buscando una solución en Swift, aterrizara aquí, sería:
myButton.isEnabled = false // disables
myButton.setTitle("myTitle", for: .normal) // sets text
Documentación: isEnabled , setTitle .
Código anterior:
myButton.enabled = false // disables
myButton.setTitle("myTitle", forState: UIControlState.Normal) // sets text
Para cambiar el título del botón:
[mybtn setTitle:@"My Button" forState:UIControlStateNormal];
[mybtn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
Para discapacitados:
[mybtn setEnabled:NO];
En Swift 3, simplemente puede cambiar el título de un botón de la siguiente manera:
button.setTitle("Title", for: .normal)
y deshabilita el botón por:
button.isEnabled = false
.normal
es lo mismo que UIControlState.normal
porque se infiere el tipo.
Si desea cambiar el título como respuesta a un toque, puede intentarlo dentro del método IBAction del botón en su delegado de controlador de vista. Esto activa y desactiva un chat de voz. ¡La configuración del chat de voz no se trata aquí!
- (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 es específico para el chat de voz, por supuesto, pero puede usar su propiedad booleana local para controlar el interruptor.
SWIFT 4 con extensión
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)
}
}
y use:
yourBtn.setAllStatesTitle("btn title")