1

テーブルビューで画像を表示する必要がありますが、すべての画像を取得しましたが、表示されません。ここで、配列には 3 つの画像が含まれています。これらの画像はサーバーから取得されたものです。インデックスパスの行のセルが最後の画像である3番目の画像のみを表示すると、1行目と2行目が空白になりますが、テーブルビューを下から上にスクロールすると、表示される1番目と2番目の画像のみが表示されます。

-

 (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = nil;
    static NSString *CellIdentifier = @"Cell";

    cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    cell.selectionStyle = UITableViewCellSeparatorStyleNone;
    cell.backgroundColor = [UIColor clearColor];
    if (appDelegate.array_xml != (id)[NSNull null])
    {
        ObjMore = [appDelegate.array_xml objectAtIndex:indexPath.row];

        //imageview
        NSString *str_img = ObjMore.iconurl;
        str_img = [str_img stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
        NSLog(@"str_img: %@", str_img);

        self.imageicon = [[UIImageView alloc]initWithFrame:CGRectMake(10, 10, 50, 50)];
        NSURL *url = [NSURL URLWithString:str_img];
        NSLog(@"url %@",url);
        [[AsyncImageLoader sharedLoader]cancelLoadingURL:url];
        self.imageicon.imageURL = url;
        self.imageicon.userInteractionEnabled = YES;
        self.imageicon.tag = indexPath.row;
        self.imageicon.backgroundColor = [UIColor clearColor];
        [cell.contentView addSubview:self.imageicon];

 }
       return  cell;
}

助けてください。前もって感謝します。

4

4 に答える 4

2

このAsyncImageViewを使用することをお勧めします。私はそれを使用しましたが、驚異的に機能します。この API を呼び出すには:

ASyncImage *img_EventImag = alloc with frame;
NSURL *url = yourPhotoPath;
[img_EventImage loadImageFromURL:photoPath];
[self.view addSubView:img_EventImage]; // In your case you'll add in your TableViewCell.

UIImageView を使用する場合と同じです。簡単で、ほとんどのことを行います。AsyncImageView には、UI をロックアップしないように iOS で非同期に画像を読み込んで表示するための UIImageView の単純なカテゴリと、より高度な機能のための UIImageView サブクラスの両方が含まれています。AsyncImageView は URL で動作するため、ローカル ファイルまたはリモート ファイルで使用できます。

ロード/ダウンロードされた画像はメモリにキャッシュされ、メモリ警告が発生した場合に自動的にクリーンアップされます。AsyncImageView は UIImage キャッシュとは独立して動作しますが、既定では、アプリケーション バンドルのルートにある画像はすべて UIImage キャッシュに格納され、キャッシュされた画像の重複が回避されます。

このライブラリを使用して、UIImageView とは無関係にイメージをロードおよびキャッシュすることもできます。これは、基になるロードおよびキャッシュ クラスへの直接アクセスを提供するためです。

于 2013-03-14T05:15:38.853 に答える
2

コードを変更してください -

[[AsyncImageLoader sharedLoader]cancelLoadingURL:self.imageicon.imageURL];

于 2013-03-14T05:29:34.447 に答える
1

UIImageViewの代わりにオブジェクトAsyncImageViewを作成します

于 2013-03-14T07:39:41.740 に答える
0

画像を取得したら、画像ビューを更新しますか、それともテーブル行を再読み込みしますか?

また、メインスレッドでUIを更新していることを確認してください。

于 2013-03-14T05:14:16.477 に答える