我开始在模拟器下测试我的应用程序,因为我没有任何iOS 6设备,偶然发现了奇怪的问题。我无法设置UITableViewCell的backgroundColor属性。如果我这样:
cell.contentView.backgroundColor = [UIColor redColor];
它仅适用于iOS 6,当我使用它时:
cell.backgroundColor = [UIColor redColor];
或者
[cell setBackgroundColor:[UIColor redColor]];
它仅适用于iOS7。
当我同时使用cell.contentView
和cell.backgroundColor
时,它同时适用于iOS ...对于这样一个“简单”属性,它不应该是一个答案吗?或者也许是一些模拟器错误?
更新:
如果它改变了同一个tableview和单元格中的任何内容,我无法通过StoryBoard和代码设置accessoryType
......
UPDATE2:由于某种原因将tableview样式设置为plain,删除了我的所有更改,但分组显示为预期...
答案 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];