我正在创建一个应用程序,其中我有许多表格单元格(> 300)。我已经成功实现了扩展和折叠tableview单元格。在展开时,将显示从Web服务获取的图像,在单击展开的单元格时,单元格再次折叠,如果单击另一个单元格,则前一个单元格将折叠,当前单元格将展开。现在的问题是,如果用户滚动tableview,单元格扩展表工作正常但是当他返回时 对它来说,图像会丢失,并且功能也存在一些问题(表格会使该单元格折叠)。
此外,如果用户继续向下滚动表格,他可以在折叠的单元格中看到该图像(看起来非常糟糕),我认为这是因为dequeueReusableCellWithIdentifier正在获取已经展开的单元格。
PS:每个图像根据单元格值而不同,但是它是在不同的调用中获取的(不是一起获取,即获取300个图像,我进行300次独立调用)。
答案 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;
}