2011-06-24 80 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]”这将解决问题。

希望这会有所帮助。