La propiedad etiqueta solo acepta números enteros, y si la piratería el valor entero para llegar a una cadena no es una opción para usted , puede subclasificar el UIButton y luego usar la sección Atributos de tiempo de ejecución definida por el usuario en IB para establecer el valor de la propiedad en su StoryBoard.
Subclase el UIButton con una nueva propiedad no entero:
@interface MyCustomUIButton : UIButton
@property (strong) NSString* stringTag;
@end
Establecer la clase de su botón a la sub-clase:
inspector de Identidad> Clase encargo> class = > MyCustomUIButton
Establezca el valor de propiedad para m IB o por medio de código:
De IB:
inspector de Identidad> Tiempo de ejecución definido por el usuario Atributos:
tecla PATH => stringTag
Tipo => Cadena
Valor = > yourstringvalue
O F Código rom:
((MyCustomUIButton*)yourButton).stringTag = @"yourstringvalue";
A continuación, se puede recuperar el valor de la propiedad de su método de acción del botón:
-(void)yourMethod:(id)sender
{
NSLog(@"The string value is: ",((MyCustomUIButton*)sender).stringTag);
// or use this idiom, to avoid a possible crash if it's the wrong class:
if ([sender respondsToSelector:@selector(stringTag)])
testeee = [sender valueForKey:@"stringTag"];
else
NSLog(@"this IS NOT a MyCustomUIButton, it's a plain UIButton");
// testeee will be NULL if you FORGOT to set the
// User Defined Runtime Attribute for 'stringTag' in storyboard
// note that a useful alternative to
// if ([sender respondsToSelector:@selector(stringTag)])
// is...
// if ([sender respondsToSelector:NSSelectorFromString(@"stringTag")])
}
* ¿Por qué * necesitas hacer eso? 'tag' es un número entero, por lo que no podrá establecer allí una cadena. Pero reitero: por favor díganos por qué necesita hacerlo, ya que es muy probable que haya una mejor solución. – mattjgalloway
no se puede analizar el valor de cadena en la etiqueta – Hector
ok, digamos que necesito pasar el valor 'addressField' cuando se presiona el botón. ¿Cómo puedo hacer eso? gracias por adelantado :) – Luca