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]];
}
}
在上述情况下,它显示正确的输出。但是,一旦我上下滚动,它就会改变输出。如何解决这个问题。我希望正确的细胞与图像和其他人不会成像。需要一些帮助。谢谢。
答案 0 :(得分:1)
如果cell.playButton
返回false,则您将所有hidden
设置为videoData.trailer
。您未在index
中使用setVideoCell:withIndex:
。
您还会在每次显示单元格时添加约束,这会导致大量重复约束。约束必须在MediaContentCell
init
或awakeFromNib
方法中设置一次。
答案 1 :(得分:1)
您是否碰巧异步调用上述代码?我遇到了同样的问题,我通过dispatch_async
调用来解决它(它不需要异步)。