图像没有加载到单元格 - IOS

时间:2016-02-15 20:40:11

标签: ios iphone tableview

我正在尝试将图像加载到表格视图单元格中,第一次没有显示图像,但是如果我刷新表格(使用刷新控件)并重新加载数据并且图像显示完美。

**我正在将图像加载到主线程中,而我正在使用自定义单元格

UIImage *image = //load image, it always return a value, never nil

if(image != nil){
    self.iconCell.contentMode = UIViewContentModeScaleAspectFill;
    self.iconCell.clipsToBounds = YES;
    self.iconCell.image = image;

    [self.iconCell setNeedsDisplay];
}

这个问题的根源是什么?

2 个答案:

答案 0 :(得分:0)

作为自定义表格视图单元格的一部分,您应该跟踪自定义单元格当前显示的行(或索引路径)。

E.G。将两个属性添加到自定义单元格,如:

@property (strong) NSIndexPath *currentIndexPath;
@property (weak) UITableView *parentTableView; // important, must be weak!

然后您可以在视图控制器的“cellForIndexPath:”方法中设置它,如:

- (UITableViewCell *)tableView:(UITableView *)tableView
     cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    ...
    ...
    myCustomCell.currentIndexPath = indexPath;
    myCustomCell.parentTableView = tableView;

现在,在您更新单元格中图像的同一功能中(以及之后),您可以通过执行以下操作重新加载单个单元格:

UIImage *image = //load image, it always return a value, never nil

if(image != nil){
    self.iconCell.contentMode = UIViewContentModeScaleAspectFill;
    self.iconCell.clipsToBounds = YES;
    self.iconCell.image = image;
}

// reloading now should have the image properly set...
NSArray *rowToReload = [NSArray arrayWithObject:self.currentIndexPath];
[self.parentTableView reloadRowsAtIndexPaths:rowToReload withRowAnimation:UITableViewRowAnimationNone];

可以看到更多信息in this related question

答案 1 :(得分:0)

问题是我正在使用自动布局,并且视图没有为我正在测试的当前尺寸检查安装。

Installing and Uninstalling Views for a Size Class