我在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;
答案 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的文档中。