我正在尝试将图像设置为UITAbleViewCell,但除非滚动,否则它不会显示。
如果重复,我道歉。但我尝试过setNeedsDiplay,reloadRowsinIndexPAth以及所有其他重载方法。我使用SDWebImageCache下载图像,RayWenderlich's example创建水平Tableviewcells。我正在粘贴我的代码供您参考。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"ArticleCell";
__block ArticleCell_iPad *cell = (ArticleCell_iPad *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[ArticleCell_iPad alloc] initWithFrame:CGRectMake(0, 0, kCellWidth_iPad, kCellHeight_iPad)];
}
if ([self.articles count] == 0) {
return cell;
}
__block Offer *offer = [self.articles objectAtIndex:indexPath.row];
dispatch_queue_t concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(concurrentQueue, ^{
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 201, 201)];
NSURL *imageURL = [NSURL URLWithString: [NSString stringWithFormat:@"%@", offer.image.url]];
[imageView setImageWithURL:imageURL];
dispatch_async(dispatch_get_main_queue(), ^{
[cell.thumbnail setImage:imageView.image];
cell.titleLabel.text = offer.title;
cell.priceLabel.text = [NSString stringWithFormat:@"$%@", offer.regularprice];
});
});
dispatch_release(concurrentQueue);
cell.selectionStyle = UITableViewCellSelectionStyleNone;
return cell;
}
答案 0 :(得分:1)
与UI相关的所有内容都需要在主线程内处理,所以放置
[imageView setImageWithURL:imageURL];
此代码位于dispatch_get_main_queue()块内部。
答案 1 :(得分:0)
回答我自己的问题。
我摆脱了中间UIImageview。将图像直接设置到缩略图就可以了。