目标c ios- UITableViewCell的背景都搞砸了

时间:2012-09-10 19:35:14

标签: ios uitableview

我在tableview中遇到问题,我正在设置uitableviewcell的背景但是当我滚动tableview时,背景图像会重叠单元格的图像和文本。我不知道原因。这是代码。请帮助我。感谢。

NSString *CellIdentifier = [NSString stringWithFormat:@"%d",indexPath.row];

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

UIImage *image = [UIImage imageNamed:@"Workout strip.png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
imageView.backgroundColor = [UIColor clearColor];
imageView.opaque = NO;
imageView.contentMode = UIViewContentModeBottomLeft;
cell.backgroundView = imageView;
cell.backgroundView.tag = indexPath.row;
[imageView release];
cell.textLabel.text = [exerciseNames objectAtIndex:indexPath.row];
cell.textLabel.backgroundColor = [UIColor clearColor];
cell.imageView.image = [UIImage imageNamed:@"Workout video box.png"];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

return cell;

2 个答案:

答案 0 :(得分:0)

首先摆脱这个:

NSString *CellIdentifier = [NSString stringWithFormat:@"%d",indexPath.row];

你的细胞都不会被重复使用,这很糟糕!而且很可能是你问题的重要部分

而是这样做:

NSString *CellIdentifier = @"Cell";

不要将背景视图设置为清除,这对性能不利。除非绝对必要,否则您希望子视图为不透明。

答案 1 :(得分:0)

由于我永远不会理解的原因UITableViewCell的背景颜色只能在UITableViewDelegate中的此调用中进行设置:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    // do whatever you need to do to your cell here to make it look the way you want
}

详细讨论在UITableViewDelegate的文档中。