iphone - developer - xcode kits
Obtenga el texto del botón de IBAction-iPhone (7)
Cuando se llama un IBAction:
-(IBAction) onClick1: (id) sender;
¿Qué se pasa en el remitente? Como está conectado a través del IB, no estoy muy seguro. Mi pregunta es cómo hacer que el texto del botón sea el objeto pasado (lo más probable es que NSString sea) para poder llamarlo dentro de la implementación de la acción.
-(IBAction) onClick1: (id) sender {
NSLog(@"User clicked %@", sender);
// Do something here with the variable ''sender''
}
El sender
debe ser el control que inició la acción. Sin embargo, no debe asumir su tipo y, en su lugar, debe dejarlo definido como un id
. En su lugar, verifique la clase del objeto en el método real de la siguiente manera:
- (IBAction)onClick1:(id)sender {
// Make sure it''s a UIButton
if (![sender isKindOfClass:[UIButton class]])
return;
NSString *title = [(UIButton *)sender currentTitle];
}
El remitente debe definirse como tipo id, no int o NSString. El remitente es el objeto real que llama al método; si lo conectó a un botón, será un UIButton, si se trata de un campo de texto, un UITextField. Puede usar esto para obtener información del control (por ejemplo, el valor de cadena actual del campo de texto) o compararla con una variable de instancia de IBOutlet si tiene múltiples controles conectados al mismo método de acción.
En realidad es:
-(IBAction) onClick1: (id) sender {
NSLog(@"User clicked %@", sender);
// Do something here with the variable ''sender''
}
sender
no es un NSString
, es del tipo id
. Es solo el control que envió el evento. Por lo tanto, si su método se activa con un clic en un botón, se UIButton
objeto UIButton
que se hizo clic. Puede acceder a todos los métodos y propiedades de UIButton
estándar UIButton
programación.
Para buscar el texto desde el botón:
NSLog(@"Date::%@",[btn titleForState:UIControlStateNormal]);
Puede usar lo siguiente para obtener la etiqueta del botón y determinar en cuál se hizo clic:
NSLog(@"Clicked button: %@",[[sender titleLabel] text]);
Para responder a su pregunta, la identificación es el objeto del IB.
Simplemente escribe el siguiente código
-(IBAction) getButtonTitle:(id)sender
{
UIButton *button = (UIButton *)sender;
NSString *buttonTitle = button.currentTitle;
NSLog(@"Button Title %@",buttonTitle);
}
Eso es ... lo has hecho!
-(IBAction)onClick:(id) sender {
UIButton *btn = (UIButton *)sender;
//now btn is the same object. And to get title directly
NSLog(@"Clicked button: %@",[[btn titleLabel] text]);
}