0

画像を UITableViewCell に設定しようとしていますが、スクロールしない限り表示されません。

重複する場合は申し訳ありません。しかし、setNeedsDiplay、reloadRowsinIndexPAth、およびその他すべてのリロード メソッドを試しました。SDWebImageCache を使用して画像をダウンロードし、RayWenderlich の例を使用して水平の 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;
}
4

2 に答える 2

1

UI に関連するものはすべてメイン スレッド内で処理する必要があるため、

[imageView setImageWithURL:imageURL];

このコードを dispatch_get_main_queue() ブロックの内部に追加します。

于 2013-03-14T00:48:48.180 に答える
0

私自身の質問に答えます。

中間の UIImageview を取り除きました。画像をサムネイルに直接設定するとうまくいきました。

于 2013-03-28T18:13:49.217 に答える