0

我在 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;
4

2 回答 2

0

首先摆脱这个:

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

您的任何细胞都不会被重复使用,这很糟糕!而且很可能是您问题的很大一部分

而是这样做:

NSString *CellIdentifier = @"Cell";

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

于 2012-09-10T19:47:33.930 回答
0

由于我永远无法理解的原因, a 的背景颜色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的文档中。

于 2012-09-10T22:24:43.190 回答