2015-08-05 4 views
3

Я знаю, что этот вопрос задавался так много раз, но я хочу передать пользовательский объект в качестве аргумента при нажатии кнопки.Альтернативный вариант UIButton addTarget: action: forControlEvents: метод в IOS

UIButton addTarget:action:forControlEvents: не позволяет нам это делать, но это важно для меня, поэтому я могу сделать дальше на основе пользовательских объектов.

Если альтернатива для добавления цели возможна, пожалуйста, дайте решение.

Код выглядит так:

заказ объекта:

HeaderData *cell ; 

Кнопка:

_forward =[UIButton buttonWithType:UIButtonTypeRoundedRect]; 
[_forward setTitle:@"F" forState:UIControlStateNormal]; 
_forward.frame = CGRectMake(300, (_CELL_HEIGHT-_LABEL_HEIGHT)/2, 10 ,_LABEL_HEIGHT);] 
[_forward addTarget:web action:@selector(functionName:) forControlEvents:UIControlEventTouchUpInside]; 

и функция, которая вызывается нажатием на _forward UIButton является:

-(void)functionName:(UIButton *)sender{ 
    //code for further programming on the basis of cell. 
} 

ответ

3

Вы можете сделать пользовательский подкласс UIButton:

@interface CustomDataButton : UIButton 
@property (nonatomic, strong) id userData; 
@end 

Тогда в FunctionName, вы можете вытащить данные обратно:

-(void)functionName:(UIButton *)sender 
{ 
    if ([sender isKindOfClass:[CustomDataButton class]]) 
    { 
     id customData = ((CustomDataButton *) sender).userData; 
    } 
} 

предостережение: написано без IDE. Остерегайтесь опечаток и т. Д.

Смежные вопросы