在iOS中的按钮能传值吗?
一般可以用打tag的方法来传值:
[button addTarget:self action:@selector(action:) forControlEvents:UIControlEventTouchUpInside];[button setTag:100];
//下面是action方法
-(void)action:(UIButton *)sender{
//sender就是UIButton,因此通过sender.tag就可以拿到刚才的参数
int i = [sender tag];
}
但是有没有更好的解决方法呢:
利用object-c的runtime特性,
#import<objc/runtime.h>
[button addTarget:self action:@selector(action:) forControlEvents:UIControlEventTouchUpInside];
//RunTime 传值 将需要传的值放到@"需要传的值"这个位置
objc_setAssociatedObject(button, @"key",@"需要传的值", OBJC_ASSOCIATION_RETAIN_NONATOMIC);
-(void)action:(UIButton *)button
{
//获取到通过runtime传过来的值
NSString *str =objc_getAssociatedObject(button, @"key");
}