2012-04-04 12 views
2

私はこれはおそらく前に頼まれている知っているが、私はデキューの問題を抱えています。基本的に、私はいくつかの並べ替えのセル内の非同期画像の読み込みを使用しています。のUITableView dequeueReusableCellWithIdentifier重複行は

だから、基本的に、私はかなり単純である3列のテーブルのために、左ミドルと右の画像を追加します。私は行の数を15に設定し(約45個のセルすべて)、それぞれのイメージURLを配列から設定します。

何らかの理由で最初の16個のセルは、下部に繰り返されますとするとき非同期画像の読み込みキック彼らは右の画像に置き換えられますインチデキューを取り除いて置き換えると、すべてが正常にロードされ、最初の16ブロックを3回くらい繰り返すことはありません。

if (!cell) { 
      cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier]; 
      cell.contentView.autoresizesSubviews = YES; 
      cell.contentView.clipsToBounds = YES; 
      cell.backgroundColor = [UIColor clearColor]; 

      Asynimage *leftImage; 
      leftImage = [[Asynimage alloc] initWithFrame:CGRectMake(0,0,IMG_SIZE,IMG_SIZE)]; 

      leftImage.tag = 10; 
      [cell.contentView addSubview:leftImage]; 

      Asynimage *middleImage; 
      middleImage = [[Asynimage alloc] initWithFrame:CGRectMake(IMG_SIZE,0,IMG_SIZE,IMG_SIZE)]; 
      middleImage.tag = 20; 

      [cell.contentView addSubview:middleImage]; 

      Asynimage *rightImage; 
      rightImage = [[Asynimage alloc] initWithFrame:CGRectMake(IMG_SIZE*2,0,IMG_SIZE,IMG_SIZE)]; 
      rightImage.tag = 30; 

      [cell.contentView addSubview:rightImage]; 


     } 



     Asynimage *leftImage=(Asynimage*)[cell.contentView viewWithTag:10]; 
     Asynimage *middleImage=(Asynimage*)[cell.contentView viewWithTag:20]; 
     Asynimage *rightImage=(Asynimage*)[cell.contentView viewWithTag:30]; 


     /*Set the urls on those 3 then do the loadimagefrom url*/ 

答えて

1

両端キューは、行と重複しないが、それはメモリ使用量を最適化するために、もはや見えない行の前にインスタンス化された細胞の再利用をトリガします。その効果は、あなたが複製と言うものとまったく同じです。 再利用されたセルには、dequedが実行された後、サブビューが設定されます。非同期イメージを配列に格納し、行インデックスを使用してそれらを右のセルに配置します。

+0

知っておかなければ、[OK]うーんそれは私の場合、イメージが行く上でロードされますので、デキューを使用するために多くの使用ではないという意味でしょうか? – user281300

+1

別のセル識別子を使用すると、それはおそらくそれを修正するでしょうが、そのポイントは何ですか? – user281300

関連する問題