UITableView单元格图像问题

时间:2011-06-24 08:56:57

标签: iphone uitableview

我正尝试在1号和2号单元格中导入图像! ,但结果是我的图像将显示在最后一个单元格中!我不知道为什么 !!这是显示我情况的图片:

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;

}

5 个答案:

答案 0 :(得分:4)

tableView:cellForRowAtIndexPath:中将imageView的图像设置为nil,然后有条件地检查以设置新图像或在您的单元子类上实现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;
}

答案 1 :(得分:2)

它让我想到的第一件事是第一个细胞以某种方式被回收并用于最后一个细胞。您可以尝试将每个单元格的图像视图设置为nil,并将其设置在前两个单元格中。应该是这样的:

cell.imageView.image = nil;

希望它有所帮助! ; d

答案 2 :(得分:2)

您可能使用过“static NSString * reuseIdentifier = @”Identifier“”,这意味着此reuseIdentifier将认为所有单元格都相同。只有可见的单元格会有所不同,例如,如果设备上有5个可见单元格,那么只有5个新单元格将被分配给单元格,然后如果向下或向上滚动,如果您静态指定了reuseIdentifier,这些单元格将被重用

我建议使用reuseIdentifier唯一标识单元格,将上面的行更改为“NSString * reuseIdentifier = [NSString stringWithFormat:@”cell%d“,indexPath.row]”这样可以解决问题。

希望这有帮助。

答案 3 :(得分:1)

tableview会重复使用您的单元格来节省内存。你必须告诉单元格不要在每个其他单元格上使用图像。像这样修改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;
}

Sandro Meier

答案 4 :(得分: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;