0

当表格视图加载时,我无法设置单元格的背景颜色,无论它保持与 XIB 中声明的颜色相同。这个表视图仍然像 XIB 一样是白色的:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}

cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:17.0];

cell.textLabel.textColor = [UIColor lightGrayColor];

UIColor *cellBackColor = [UIColor orangeColor];

cell.backgroundColor = cellBackColor;
return cell;
}

我能做些什么来确保我的方法中的颜色是表格视图上的颜色。

注意:显然,如果我可以在 XIB 中更改它,但最终我希望颜色可以交替。

4

3 回答 3

2

UITableViewCell有一个内容视图。您可以通过contentView属性访问它。这就是为什么您看不到单元格的颜色发生变化的原因。内容视图覆盖单元格的整个框架,它包含您添加到单元格的所有视图。您可以更改它backgroundColor以查看效果。

作为更好的解决方案,您可以backgroundView为单元格的属性分配一个新视图。

cell.backgroundView = [[UIView alloc]initWithFrame:cell.frame];
cell.backgroundView.backgroundColor = [UIColor blueColor];

您也可以使用backgroundView将背景设置为自定义图像。

于 2013-06-08T15:46:30.160 回答
0

在 cellForRowAtIndexPath 方法中使用:

cell.contentView.backgroundColor = [UIColor redColor];

于 2013-06-08T17:01:43.510 回答
0

尝试将更改背景颜色的代码放在 table view 的 willDisplayCell:forRowAtIndexPath: 委托方法中:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    UIColor *cellBackColor = [UIColor orangeColor];
    cell.backgroundColor = cellBackColor;
}
于 2013-06-08T15:58:47.197 回答