1

UITableViewを使用しています。本をダウンロードすると、テーブルにチェックマークの画像が追加されます。そして、私はこれをしました。しかし、テーブルをスクロールしていると、ダウンロードされていない本でも画像が表示されます(つまり、テーブルのセルが再利用されます)。このために私はグーグルでコードをチェックしました。すべて同じようです。これが私のコードです、

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{

      UIImage *cellImage= [cacheImage getCachedImage:[listOfThumImages objectAtIndex:indexPath.row]];
      if(cellImage == nil)
{
    DeviantDownload *download;
    download = [DownloadsArray objectAtIndex:indexPath.row];
    cellImage = download.image;
    if (cellImage == nil)
    {
        download.delegate = self;
    }

NSLog(@"cellImage%@",cellImage);
UIImageView *imgView;


static NSString *CellIdentifier = @"";

cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil)
{
    cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

} 

  imgView1 = [[UIImageView alloc] initWithFrame:CGRectMake(680, 60, 40, 40)];//self.view.bounds.size.width-
    [imgView1 setImage:[UIImage imageNamed:@"Downloaded.png"]];

  NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    if([defaults objectForKey:@"firstRun"])
    {
       if([[[appDelegate selectDB] valueForKey:@"bookname"] containsObject:[listOfBooks objectAtIndex:indexPath.row]] )
      {
           NSString *cellValue = [listOfBooks objectAtIndex:indexPath.row];
           cell.contentView addSubview:imgView1];
      }
   return cell;

    }
 }

}

私のコードの何が問題になっていますか?親切に私を助けてください。ありがとうございます。

4

2 に答える 2

0

セルに画像を表示したくない場合は、そのセルのイメージビューを削除するだけです。画像ビューの view.tag を設定し、それを取得してから削除します。

現在行っていることは、セルに必要になったらすぐに画像サブビューを追加し、後でそのセルを他のすべての行に再利用することです。しかし、必要のないセルのイメージビューを削除したことはありません。

于 2013-02-01T11:26:19.747 に答える