IOS uitableviewcell在滚动时改变单元格的内容

时间:2015-01-26 19:19:19

标签: ios uitableview

HI我正在开发小型IOS应用程序,其中我使用自定义单元格的表视图。我的单元格包含简单的视图,我有一个文本和一个图像。对于某些单元格图像是存在的,对于某些单元格它不存在。所以我正在动态添加和删除它。它显示正确的输出但是一旦我滚动并再次回到相同的单元格,它就删除了那个图像。我按照以下方式尝试了它

MediaContentCell *cell = (MediaContentCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

if (cell == nil) {
    cell = (MediaContentCell *)[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}

[self setVideoCell:cell withIndex:indexPath.row];
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

-(void) setVideoCell:(MediaContentCell *)cell withIndex:(int)index
{
if(videoData.trailer)
{
    cell.playButton.hidden = NO;
}
else
{
  //        [cell.playButton removeFromSuperview];

    cell.playButton.hidden = YES;

    // adding new contraints ....
        [cell.contentDescription addConstraint:[NSLayoutConstraint constraintWithItem:cell.mediaTitle attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:cell.contentDescription attribute:NSLayoutAttributeTrailing multiplier:1.0f constant:-10]];

        [cell.contentDescription addConstraint:[NSLayoutConstraint constraintWithItem:cell.mediaSubtitle attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:cell.contentDescription attribute:NSLayoutAttributeTrailing multiplier:1.0f constant:-10]];
}
}

在上述情况下,它显示正确的输出。但是,一旦我上下滚动,它就会改变输出。如何解决这个问题。我希望正确的细胞与图像和其他人不会成像。需要一些帮助。谢谢。

2 个答案:

答案 0 :(得分:1)

如果cell.playButton返回false,则您将所有hidden设置为videoData.trailer。您未在index中使用setVideoCell:withIndex:

您还会在每次显示单元格时添加约束,这会导致大量重复约束。约束必须在MediaContentCell initawakeFromNib方法中设置一次。

答案 1 :(得分:1)

您是否碰巧异步调用上述代码?我遇到了同样的问题,我通过dispatch_async调用来解决它(它不需要异步)。