tableViewCell 内容行为奇怪

Posted

技术标签:

【中文标题】tableViewCell 内容行为奇怪【英文标题】:tableViewCell content acts strange 【发布时间】:2015-01-27 13:09:45 【问题描述】:

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

1.我要做的第一件事是在storyboard中连接标签: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"]];

    

感谢任何帮助或建议。问候

【问题讨论】:

【参考方案1】:

这是因为 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];


【讨论】:

投了赞成票,因为你刚刚在我发布完全相同的答案之前发布了它:) 这应该有效 感谢您的回答。它解决了我的问题。 / 拥抱

以上是关于tableViewCell 内容行为奇怪的主要内容,如果未能解决你的问题,请参考以下文章

奇怪的 MySQL CREATE TABLE 行为

Postgresql 中的奇怪行为

在子类中定义一个属性,然后在父类中使用它,PHP中的奇怪行为?

BULK COLLECT 的奇怪行为

iOS Tableviewcell 分隔符看起来很奇怪

scrollToRowAtIndexPath 上非常奇怪的 UITableViewController.tableview 行为