2011-06-24 20 views
1

セル番号1と2の画像をインポートしようとしています。しかし、結果は私のイメージが最後のセルに表示されます!何故かはわからない !!これは私の状況を示した画像です:UITableViewセル画像の問題

enter image description here

// Configure the cell. 
    NSUInteger row = [indexPath row]; 
    cell.textLabel.text = [titles objectAtIndex:row]; 
    cell.detailTextLabel.text = [subtitle objectAtIndex:row]; 


    switch (indexPath.row) { 
     case 0: 
      cell.imageView.image = [UIImage imageNamed:@"new.png"]; 
      break; 

     case 1: 
      cell.imageView.image = [UIImage imageNamed:@"new.png"]; 
      break; 
    } 



    return cell; 

} 

答えて

4

どちらかあなたのtableView:cellForRowAtIndexPath:に条件付きで新しいイメージを設定したり、細胞のサブクラスとセットにprepareForReuseを実装するためにチェックする前にnilにimageViewの画像を設定しますすべてのセルのビューの値はゼロになります。

これは、再利用されたセルが画面に表示される前に「クリーン」であることを保証します。あなたの細胞は、メモリを節約するためにテーブルビューが再利用されている

switch (indexPath.row) { 
    case 0: 
     cell.imageView.image = [UIImage imageNamed:@"new.png"]; 
     break; 

    case 1: 
     cell.imageView.image = [UIImage imageNamed:@"new.png"]; 
     break; 
    default: 
     cell.imageView.image = nil; 
     break; 
} 
+0

ありがとうございました。 –

1

別の方法としては、見えるようにあなたのswitchを編集することができます。他のすべてのセルでイメージを使用しないようにセルに指示する必要があります。

switch (indexPath.row) { 
    case 0: 
     cell.imageView.image = [UIImage imageNamed:@"new.png"]; 
     break; 

    case 1: 
     cell.imageView.image = [UIImage imageNamed:@"new.png"]; 
     break; 

    default: 
     cell.imageView.image = nil; 
     break; 
} 

サンドロ・マイヤー

+0

ありがとうございました:) –

2

それは私がのが最初のセルが何らかの形でリサイクルされ、最後のセルに使用されることをであると思わせることをまず最初に:このようなswitchコマンドを変更します。すべてのセルに対してイメージビューをnilに設定して、最初の2つのセルに設定することができます。このようなものでなければなりません:

cell.imageView.image = nil; 

希望します。 ;あなたは「静的NSStringの* reuseIdentifier = @」識別子」」使用している場合があります、それはあなたに

case 0: 
     cell.imageView.image = [UIImage imageNamed:@"new.png"]; 
     break; 

    case 1: 
     cell.imageView.image = [UIImage imageNamed:@"new.png"]; 
     break; 
    default 
     cell.imageView.image=nil; 
1

を、これはすべての細胞が、このreuseIdentifierで同じとみなされることを意味します。表示されているセルのみが異なるため、たとえば、デバイスに表示されているセルが5つある場合は、5つの新しいセルがセルに割り当てられ、次に上下にスクロールすると、reuseIdentifierを静的に指定した場合、 。

reuseIdentifierでセルを一意に識別し、上記の行を "NSString * reuseIdentifier = [NSString stringWithFormat:@" cell%d "、indexPath.row]に変更することをお勧めします。

これが役に立ちます。

2

を助けるかもしれない、これを試すD