Cómo implementar la propiedad addTarget en un button UIB

Tengo una function (por ejemplo, function1 ) donde tengo un button y un object llamado auxiliarStruct, y tengo esa línea:

[btn addTarget:self action:@selector(userSelected:) forControlEvents:UIControlEventTouchUpInside]; 

Pero en @selector (userSelected) necesito pasar como parameters un object necesario en esa function, pero no sé cómo implementarlo. He declarado ese object aquí:

 //UsersController.h #import <UIKit/UIKit.h> @interface UsersController : NSObject{ NSInteger *prof_id; NSString *createTime; NSString *fullName; NSString *thumb; } @property (nonatomic) NSInteger *prof_id; @property (nonatomic, retain) IBOutlet NSString *createTime; @property (nonatomic, retain) IBOutlet NSString *fullName; @property (nonatomic, retain) IBOutlet NSString *thumb; @end 

Tengo la function llamada declarada así:

 -(void)userSelected:(id)sender{ //CODE } 

Tengo un object de esta class, llamado auxiliarStruct y esto es lo que necesito. Intenté con

 [btn addTarget:self action:@selector(**userSelected:auxiliarStruct**)forControlEvents:UIControlEventTouchUpInside]; 

pero no funciona ¿Alguien me puede ayudar? Gracias.

ps: perdón por mi inglés, sé que es malo

Solo puede pasar un object (UIButton*) como un parámetro con el método addTarget @selector . Puede configurar la label de UIB y usarla en la function llamada. Es posible que desee averiguar alternativas para enviar valores de cadena.

Use el siguiente código para pasar una label con el button:

  btn_.tag = 10; [btn_ addTarget:self action:@selector(functionName:) forControlEvents:UIControlEventTouchUpInside]; 

La acción del button debería verse así:

 - (void) functionName:(UIButton *) sender { NSLog(@"Tag : %d", sender.tag); } 

No sé si puedes agregar parameters a la acción del button, nunca encontré ese método.

Lo más parecido que hicimos fue seleccionar diferentes tags para los botones y diferenciar las acciones según las tags.

De todos modos, esta no es exactamente una respuesta a su pregunta, pero sugeriría como una alternativa para usar una propiedad de class en lugar de enviar el parámetro. Por ejemplo:

  • click el button y desea enviar el valor "testing" a su selector. En lugar de enviar "testing", establece esa propiedad de class para "probar" y en su selector lo lee desde allí. No sé si se ajusta a sus necesidades al 100%, pero considero que es una opción.

Sin embargo, plantea una pregunta interesante. Intentaré searchlo en caso de que también lo necesite algunas veces y si encuentro algo, actualizaré mi respuesta

[edit] Aparentemente no eres el único que hace esta pregunta: ¿Cómo puedo pasar un parámetro a esta function? En este caso, tampoco existía una solución estándar y se usó la label.

El evento enviará el button como parámetro, de modo que:

  -(void)userSelected:(id)sender { UIButton *button = sender; ... }