我正在尝试将图像加载到表格视图单元格中,第一次没有显示图像,但是如果我刷新表格(使用刷新控件)并重新加载数据并且图像显示完美。
**我正在将图像加载到主线程中,而我正在使用自定义单元格
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];
}
这个问题的根源是什么?
答案 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)
问题是我正在使用自动布局,并且视图没有为我正在测试的当前尺寸检查安装。