我有一个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。似乎没有用!
答案 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];