kits developer desarrollador apple iphone objective-c cocoa interface-builder

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]); }