2013-12-11 2 views
-3

У меня есть пользовательская ячейка таблицы, где у меня есть UIButton. Я хочу написать действие для каждой кнопки, помещенной в ячейку tableview. скажите мне, как это сделать. Я пробовал использовать тег, но его не работает как cellForRowAtIndexPath загружает всю ячейку сразу, чтобы ее переписать номер тега. скажите, пожалуйста, как это сделать. следующий код я используюКак написать действия для UIButton, помещенные в каждую ячейку таблицы?

if(indexPath.row == 0){[cell.viewButton addTarget:self action:@selector(playMovie) forControlEvents:UIControlEventTouchUpInside]; 
     cell.viewButton.tag = 1; 
    } 
    else { 
     [cell.viewButton addTarget:self action:@selector(playMovie) forControlEvents:UIControlEventTouchUpInside]; 
     cell.viewButton.tag = 2; 
    } 
return cell; 

enter image description here

+3

вы хотите сделать различные действия для различных кнопок или же действий для всех кнопки – Yohan

+0

различного действия для различных кнопок и я не хотите использовать didSelectRowAtIndexPath , –

+0

@jrturton его не дублирует. PFP в моем вопросе я обновил. Я не использую IBOutlet только как UIButton. –

ответ

0

No need to add target for every rows, делать что-то вроде этого:

if(indexPath.row == 0){ 
     cell.viewButton.tag = 100; 
    } 
    else { 
     cell.viewButton.tag = 101; 
    } 
[cell.viewButton addTarget:self action:@selector(playMovie:) forControlEvents:UIControlEventTouchUpInside]; 
return cell; 


-(IBAction)playMovie:(id)sender{ 
if(sender.tag == 100){ 
// Do your Stuff.. 
}else if(....)..... 

} 
1

Сквозное экземпляр кнопки также с @selector

[cell.viewButton addTarget:self action:@selector(playMovie:) forControlEvents:UIControlEventTouchUpInside] 
cell.viewButton.tag = indexpath.row; 

А потом реализовать кнопку cl ick метод, подобный этому

-(void)playMovie:(UIButton *)sender{ 

    if(sender.tag == 0){ 
    NSLog(@"button at first cell"); 

    }else if (sender.tag == 1){ 
    NSLog(@"button at first cell"); 
    } 
    // SO on....... 
} 
1

Вы можете указать тег кнопки на кнопку, после чего вы можете идентифицировать эту кнопку в своем методе.

cell.btn.tag = indexPath.row+1; 

и вы можете получить, что в событии нажатия

-(void)btnOnClick:(id)sender 
{ 
UIButton *btnTag = (UIButton *)sender.tag; 
if(btn.tag == 1) 
{ 
} 
} 
+0

Почему вы добавляете +1? Есть ли у них какая-то особая причина? – Mani

+0

в tableview indexPath.row начинается с 0, поэтому добавьте +1, чтобы он начинался с +1. Ничего больше. –

+0

Я могу понять, что вы сделали. Но даже если вы не добавили +1, код должен работать .. вот почему спросил .. Счастливое кодирование :) – Mani

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