2011-06-24 113 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:設置imageView的形象,以零條件檢查,設置新的圖像或者實現你的細胞亞類prepareForReuse之前和設置所有單元格的視圖值都爲零。

這將確保重新使用的單元格在屏幕上顯示之前是「乾淨的」。

另外,您可以編輯您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

謝謝:) –

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

,這讓我想到的是,第一個單元格被莫名其妙地回收並用於最後一個單元格的第一件事。您可以嘗試將圖像視圖設置爲零,並將其設置在前兩個單元格中。應該是這樣的:

cell.imageView.image = nil; 

希望它有幫助! ; d

1

試試這個它可以幫助你

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; 
2

您可能已經使用「靜態的NSString * reuseIdentifier = @」標識」」,這意味着所有的細胞將被視爲本reuseIdentifier相同。例如,如果設備上有5個可見單元格,那麼只有5個新單元格將分配給單元格,然後如果向下滾動或向上滾動,則這5個單元格將被重用,如果您指定靜態重用標識符。

我建議通過重用標識符來使單元格唯一標識,將上面的行更改爲「NSString * reuseIdentifier = [NSString stringWithFormat:@」cell%d「,indexPath.row]」這將解決問題。

希望這會有所幫助。