iOS - 何时从UITableViewCell中删除子视图

时间:2012-07-06 09:01:45

标签: uitableview uiimage subview

我有一个UITableView,其中UIImage被添加为每个单元格的子视图。图像是PNG透明的。问题是当我滚动UITableView时,图像重叠,然后我收到内存警告和内容。

这是配置单元格的当前代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    int cellNumber = indexPath.row + 1;
    NSString *cellImage1 = [NSString stringWithFormat:@"c%i.png", cellNumber];
    UIImage *theImage = [UIImage imageNamed:cellImage1];
    UIImageView *cellImage = [[UIImageView alloc] initWithImage:theImage];
    [cell.contentView addSubview:cellImage];

    return cell;
}

我知道删除UIImage子视图的代码如下:

[cell.imageView removeFromSuperview];

但我不知道该把它放在哪里。我把它放在所有线之间;甚至在if语句中添加了else。似乎没有用!

2 个答案:

答案 0 :(得分:1)

UITableViewCell已附加图片视图。删除:

UIImageView *cellImage = [[UIImageView alloc] initWithImage:theImage];
[cell.contentView addSubview:cellImage];

添加:

[cell.imageview setImage:theImage];

你很高兴去!

结果代码如下:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    UIImage *cellImage = [UIImage imageNamed:[NSString stringWithFormat:@"c%i.png", indexPath.row + 1]];
    [cell.imageView setImage:cellImage];

    return cell;
}

答案 1 :(得分:1)

你保持这个:

 [cell.imageview setImage:theImage];

并删除:

UIImageView *cellImage = [[UIImageView alloc] initWithImage:theImage];
[cell.contentView addSubview:cellImage];