无法在iOS6中设置UITableViewCell的背景颜色?

时间:2013-12-04 11:04:03

标签: ios objective-c uitableview ios-simulator

我开始在模拟器下测试我的应用程序,因为我没有任何iOS 6设备,偶然发现了奇怪的问题。我无法设置UITableViewCell的backgroundColor属性。如果我这样:

cell.contentView.backgroundColor = [UIColor redColor];

它仅适用于iOS 6,当我使用它时:

cell.backgroundColor = [UIColor redColor];

或者

[cell setBackgroundColor:[UIColor redColor]];

它仅适用于iOS7。

当我同时使用cell.contentViewcell.backgroundColor时,它同时适用于iOS ...对于这样一个“简单”属性,它不应该是一个答案吗?或者也许是一些模拟器错误?

更新: 如果它改变了同一个tableview和单元格中的任何内容,我无法通过StoryBoard和代码设置accessoryType ......

UPDATE2:由于某种原因将tableview样式设置为plain,删除了我的所有更改,但分组显示为预期...

5 个答案:

答案 0 :(得分:19)

在iOS6中,您需要在willDisplayCell中更改单元格的backgroundColor。 这也适用于iOS7,无需特定于版本的代码。

- (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    [cell setBackgroundColor:[UIColor redColor]];
}

答案 1 :(得分:7)

我没有看到将contentView AND的背景设置为单元格的问题。 iOS 7已经改变了很多这个类。如果您需要与旧系统兼容,那么您需要执行此类操作。

所以是的,你应该同时使用两者:

cell.contentView.backgroundColor
cell.backgroundColor

答案 2 :(得分:4)

尝试更改单元格的backgroundView颜色而不是backgroundColor。

UIView *myView = [[UIView alloc] init];
myView.backgroundColor = [UIColor whiteColor];
cell.backgroundView = myView;

答案 3 :(得分:1)

如果设置(假设您使用标准单元格):

cell.textLabel.backgroundColor = [UIColor clearColor];

...然后你只需要使用:

cell.contentView.backgroundColor = [UIColor redColor];

iOS 6似乎将表格的背景颜色复制到textLabel。

答案 4 :(得分:0)

尝试添加此代码:

cell.backgroundView.backgroundColor = [UIColor clearColor];