繁体   English   中英

在重新使用单元格之前,UITableView单元格中的图像不显示

[英]Image in UITableView Cell not showing until the cell re used

我在UITableViewCell中显示图像。 当我进入屏幕时,图像没有显示,但是在滚动后(例如,重新启动单元格后,图像显示了)。 问题如下所示。

在此处输入图片说明

我使用的代码是

{
    EMROUploadImageCell *cell = (EMROUploadImageCell *)[tableView dequeueReusableCellWithIdentifier:@"EMROUploadImageCell"];
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    if (![[dictInput valueForKey:@"image"]isEqualToString:@""])
    {
        cell.imageViewUploadImage.layer.borderWidth = 0.0;
        cell.imageViewUploadImage.layer.cornerRadius = cell.imageViewUploadImage.frame.size.height/2;
        cell.imageViewEdit.hidden = YES;
        cell.imageViewUploadImage.clipsToBounds = YES;
        if (isImageChanged)
        {
            NSData *data = [NSData dataWithContentsOfFile:[dictInput valueForKey:@"image"]];
            UIImage *image = [UIImage imageWithData:data];
            [cell.imageViewUploadImage setImage:image];
        }
        else
        {
            [cell.imageViewUploadImage sd_setImageWithURL:[NSURL URLWithString:[dictInput valueForKey:@"image"]]
                             placeholderImage:nil
                                      options:SDWebImageRefreshCached];
         }

    }
    else
    {
        cell.imageViewUploadImage.layer.borderWidth = 1.0f;
        cell.imageViewUploadImage.layer.borderColor = [[UIColor lightGrayColor] CGColor];
        cell.imageViewUploadImage.layer.cornerRadius = cell.imageViewUploadImage.frame.size.height/2;
        cell.imageViewEdit.hidden = NO;
        cell.imageViewEdit.clipsToBounds = YES;
        cell.imageViewUploadImage.layer.masksToBounds = YES;
        cell.imageViewUploadImage.clipsToBounds = YES;
        [cell.imageViewUploadImage setNeedsDisplay];
        [cell.imageViewUploadImage setNeedsLayout];
        [cell.imageViewUploadImage layoutIfNeeded];
    }
    [cell.btnUploadImage addTarget:self action:@selector(btnUploadImageAction:) forControlEvents:UIControlEventTouchUpInside];
    return cell;
}

[tableView reloadData];

进入btnUploadImageAction:方法。

在主线程上重新加载表,我之前也遇到过同样的问题,

dispatch_async(dispatch_get_main_queue(), ^{
    [tableView reloadData];
});

希望有帮助!

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    EMROUploadImageCell *cell = (EMROUploadImageCell *)[tableView dequeueReusableCellWithIdentifier:@"EMROUploadImageCell"];

    [tableView beginUpdates];
    // your code
    [tableView endUpdates];

    return cell;
}

希望有帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM