在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");
}