使用[tableView dequeueReusableCellWithIdentifier:forIndexPath:]为ios6中的单元格中的按钮添加动作处理程序

时间:2013-06-18 23:02:44

标签: ios objective-c

在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)。

任何建议表示赞赏,

格·

1 个答案:

答案 0 :(得分:0)

再次添加它。该按钮自动消除重复的目标/动作对。如果你这样做:

for (int i = 0; i < 100; ++i) {
    [cell.playButton addTarget:self action:@selector(playInputClicked:) forControlEvents:UIControlEventTouchUpInside];
}

...你会发现每次点击只能获得playInputClicked:次,而不是100次。