滚动后,展开的TableViewCell中的图像丢失

时间:2011-01-30 12:53:56

标签: iphone ipad uitableview

我正在创建一个应用程序,其中我有许多表格单元格(> 300)。我已经成功实现了扩展和折叠tableview单元格。在展开时,将显示从Web服务获取的图像,在单击展开的单元格时,单元格再次折叠,如果单击另一个单元格,则前一个单元格将折叠,当前单元格将展开。现在的问题是,如果用户滚动tableview,单元格扩展表工作正常但是当他返回时 对它来说,图像会丢失,并且功能也存在一些问题(表格会使该单元格折叠)。

此外,如果用户继续向下滚动表格,他可以在折叠的单元格中看到该图像(看起来非常糟糕),我认为这是因为dequeueReusableCellWithIdentifier正在获取已经展开的单元格。

PS:每个图像根据单元格值而不同,但是它是在不同的调用中获取的(不是一起获取,即获取300个图像,我进行300次独立调用)。

1 个答案:

答案 0 :(得分:0)

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{
    static NSString *CellIdentifier = @"Cell";
    UIImageView * imageView;
    UILabel     * nameLabel;

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                       reuseIdentifier:CellIdentifier] autorelease];

        nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(45.0, 5.0, 245.0, 34.0)];
        nameLabel.font = [UIFont fontWithName:CELL_FONT size:CELL_FONT_SIZE];
        nameLabel.tag = 2;
        nameLabel.backgroundColor = [UIColor clearColor];
        [cell.contentView addSubview:nameLabel];
        [nameLabel release];

        imageView = [[UIImageView alloc] initWithFrame:CGRectMake(5.0, 5.0, 30.0, 30.0)];
        imageView.tag = 1;
        imageView.contentMode = UIViewContentModeScaleAspectFit;
        [cell.contentView addSubview:imageView];
        [imageView release];
    }
    else {
        imageView = (id)[cell.contentView viewWithTag:1];
        nameLabel = (id)[cell.contentView viewWithTag:2];
    }

    return cell;
}