在ios6中, [UITableView dequeueReusableCellWithIdentifier:forIndexPath:]始终返回一个单元格。 那么如果我想在我的单元格上添加一些按钮处理程序,并且每次重复使用单元格时都避免添加目标,那该怎么办呢。
现在,我使用tag来记忆已经被连接的单元格了:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"MyCell";
MyCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
if(!cell.tag){
cell.tag = 1;
[cell.playButton addTarget:self action:@selector(playInputClicked:) forControlEvents:UIControlEventTouchUpInside];
}
return cell;
}
任何更好的解决方案(不使用registerClass或registerNib)。
任何建议表示赞赏,
格·
答案 0 :(得分:0)
再次添加它。该按钮自动消除重复的目标/动作对。如果你这样做:
for (int i = 0; i < 100; ++i) {
[cell.playButton addTarget:self action:@selector(playInputClicked:) forControlEvents:UIControlEventTouchUpInside];
}
...你会发现每次点击只能获得playInputClicked:
次,而不是100次。