将自定义子视图添加到UITableView中的某些可重用单元

时间:2013-05-06 15:27:24

标签: ios uitableview

我的UITableview中有一个可重复使用的单元格,我只想在某些单元格上添加自定义图像。

以下是我的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    BCContactCell * cell = [tableView dequeueReusableCellWithIdentifier:contactCellIdentifier];
    ...
    if ([contact isFavorite]) {
        UIImageView * fav = [[UIImageView alloc] initWithFrame:CGRectMake(280.0f, 2.0f, 32.0f, 32.0f)];
        [fav setImage:favoriteImg]; // already loaded
        [cell addSubview:fav];
    }
}

它有效,每个最喜欢的联系人都在其单元格中有图片。 除非我向下滑动,否则其他单元格也开始拍摄,我似乎无法弄明白。

任何人都可以帮我解决这个问题吗?

谢谢!

1 个答案:

答案 0 :(得分:6)

我们走了,

为您的imageview提供标签号, fav.tag = 1290; 稍后使用该数字我们可以返回旧的uiimageview并将其从单元格中删除。
else {             [[cell viewWithTag:1290] removeFromSuperview];         }

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    BCContactCell * cell = [tableView dequeueReusableCellWithIdentifier:contactCellIdentifier];
    ...
    if ([contact isFavorite]) {
        UIImageView * fav = [[UIImageView alloc] initWithFrame:CGRectMake(280.0f, 2.0f, 32.0f, 32.0f)];
        fav.tag = 1290;
        [fav setImage:favoriteImg]; // already loaded
        [cell addSubview:fav];
    }else{
        [[cell viewWithTag:1290] removeFromSuperview];
    }
}

说到UITableViewCells,他们重用已经创建的单元格。当他们重用旧的一次。您必须删除添加到单元格中的UIImageView;