uitableview 中的单元格图像在滚动时显示备份

Posted

技术标签:

【中文标题】uitableview 中的单元格图像在滚动时显示备份【英文标题】:Cell image in uitableview shows back up when scrolling 【发布时间】:2012-10-18 22:30:46 【问题描述】:

如果消息未读,我正在执行以下操作来设置单元格图像

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MessageCell"];

        Message *m = [self.messages objectAtIndex:indexPath.row];

        cell.textLabel.text = m.subject;
        NSString *detail = [NSString stringWithFormat:@"%@ - %@", m.callbackName, m.dateSent];
        cell.detailTextLabel.text = detail;

        if([m.messageRead isEqualToString:@"False"])
            cell.imageView.image = [UIImage imageNamed:@"new.png"];


    return cell;

这是正确显示图像的时候。但是,如果我向下滚动并向上滚动,它们都会显示图像是否应该显示

【问题讨论】:

【参考方案1】:

细胞被重复使用。所以你需要为每个条件设置每个属性。

if([m.messageRead isEqualToString:@"False"])
    cell.imageView.image = [UIImage imageNamed:@"new.png"];
else
    cell.imageView.image = nil;

【讨论】:

啊,我想我从来没有把这两个放在一起。【参考方案2】:

由于UITableViewCells 被重复使用,您应该将cell.imageView.image 设置为nil,以防您不需要图像。

if([m.messageRead isEqualToString:@"False"]) 
    cell.imageView.image = [UIImage imageNamed:@"new.png"];
 else 
    cell.imageView.image = nil;

【讨论】:

以上是关于uitableview 中的单元格图像在滚动时显示备份的主要内容,如果未能解决你的问题,请参考以下文章

为啥我在自定义单元格中的复选框在快速选择和滚动时显示不同的行为?

自定义 tableViewCell 滚动时显示不正确

UITableView:加载所有单元格

自定义 UITableViewCell 在滚动时显示完整单元格之前不显示数据

UITableView 中的自定义单元格使图像在滚动时重叠

Xamarin form-UWP - 在快速滚动列表时显示数据之前的黑色单元格