-1

テーブルビュー名「tableAll」、配列「thumbVideoListArray」(最初にこの配列は空です)があり、画像のURLを持つ配列「objDelegate.listVidArray」があります..ミスチェックがあると思います。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
  if([thumbVideoListArray count] == 0)
        {
            [NSThread detachNewThreadSelector:@selector(fetchImage:) toTarget:self withObject:indexPath];
        }
        else
        {
             UIImage *img1 = [thumbVideoListArray objectAtIndex:indexPath.row];
            if(img1)
            {

                cell.thumbImage =  [thumbVideoListArray objectAtIndex:indexPath.row];
            }
            else
            {
                [NSThread detachNewThreadSelector:@selector(fetchImage:) toTarget:self withObject:indexPath];
            }
        }
}

- (void)fetchImage:(NSIndexPath *)indexPath
{

NSLog(@"in thead");

if([[[[objDelegate.listVidArray objectAtIndex:[objDelegate.listVidArray count]-(indexPath.section+1)]valueForKey:@"videoList"]valueForKey:@"media_id"]objectAtIndex:indexPath.row])
{
    NSData *dataImage = [NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@",[[[[objDelegate.listVidArray objectAtIndex:[objDelegate.listVidArray count]-(indexPath.section+1)]valueForKey:@"videoList"]valueForKey:@"img"]objectAtIndex:indexPath.row]]]];


    if([dataImage length])
    {

        UIImage *imageThumb = [UIImage imageWithData:dataImage];

        [thumbVideoListArray addObject:imageThumb];

        // Reload rows with the fetched image in other thread
        [self performSelectorOnMainThread:@selector(reloadTable:) withObject:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:indexPath.row inSection:indexPath.section]] waitUntilDone:NO];
    }
}

}

- (void)reloadTable:(NSArray *)array
{

[tableAll reloadRowsAtIndexPaths:array withRowAnimation:UITableViewRowAnimationNone];

 }
4

3 に答える 3

0

これは良い方法ではないため、いくつかの変更が必要です。代わりに、必要に応じてviewDidLoadまたはviewWillAppearでフェッチプロシージャを呼び出し、その後テーブルをリロードするだけです...そしてさらに重要なことにここで NSOperation を使用し、ロードしたデータにタグを付けて、セルに合わせて調整できるようにすることを忘れないでください...私が何度も行ったように、問題を解決してくれることを願っています。

于 2012-11-22T07:18:11.910 に答える
0

ウェブから画像を遅延読み込みするためにAsyncImageViewを試すことができると思います

于 2012-11-22T07:08:21.897 に答える
0

-tableView:cellForRowAtIndexPath: では、セル オブジェクトを取得することはありません。プロパティを設定する前に、再利用可能なセルをデキューする必要があります。また、セルを返す必要があります。

于 2012-11-22T07:02:11.507 に答える