uitableViewCell 内容行为异常

tableViewCell content acts strange

我需要一些帮助来了解可能导致我的 TableViewCell 内容出现问题的原因。在我的应用程序中,我使用了一个论坛。在论坛里我们用头像给了comments/persons。现在我想给所有名字为 "X" 的人一个相同的头像。为此,我正在尝试使用下面的代码,但它不能完美运行,我不明白为什么?有时代码会出现错误并给出例如别名 "Y" 的人 "X" 别名头像?

1.First 我做的事情是在故事板中连接标签:tableView -> tableViewCell 将 UIImageViews 标签设置为 20。

2。然后我 运行 下面的代码在其他情况下适用于别名,TableViewCells 内容中的注释。

 static NSString *CellIdentifier = @"ForumthreadCell";

    UITableViewCell *cell = [pTableView dequeueReusableCellWithIdentifier:CellIdentifier];

    ForumPost *x [self.items objectAtIndex:indexPath.row];

    UIImageView *pic = (UIImageView *) [cell viewWithTag: 20];

    if ([x.alias isEqualsToString:@"X"]){

    [pic setImage:[UIImage imagedNamed:@"some picture here.png"]];

    }

如有任何帮助或建议,我们将不胜感激。此致

这是因为 UITableView 中的所有单元格都被重用了。这意味着您的第一个单元格将被重新用于加载,比方说,您的第六个单元格。如果您不重新加载那里的所有元素并且您在第一个单元格中有图像,则该图像将保留在第六个单元格中。您可以使用的另一个示例是设置 if indexPath.row == 1 将 ForumPost 的某些 属性 设置为特定值(初始化后 ForumPost *x),您将有类似的行为。

要让细胞正常工作,您需要管理所有可能的情况。

例如,您有:

if ([x.alias isEqualsToString:@"X"]){

    [pic setImage:[UIImage imagedNamed:@"some picture here.png"]];

}

但你也需要

else if ([x.alias isEqualsToString:@"Y"]){

    [pic setImage:[UIImage imagedNamed:@"other pic.png"]];

}

并且,如果您有其他起始名称,例如 a、b、c 等:

else if ([x.alias isEqualsToString:@"Y"]){

     [pic setImage:nil];

}