在XIB之外设置UITableViewCell Background

时间:2013-06-08 15:38:42

标签: ios objective-c cocoa-touch

当表视图加载时,我无法设置单元格的背景颜色,无论它保持与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中更改它,但最终我希望颜色交替。

3 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:0)

尝试在willDisplayCell中添加用于更改背景颜色的代码:forRowAtIndexPath:表视图的委托方法:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    UIColor *cellBackColor = [UIColor orangeColor];
    cell.backgroundColor = cellBackColor;
}

答案 2 :(得分:0)

在cellForRowAtIndexPath方法中使用:

cell.contentView.backgroundColor = [UIColor redColor];