I started testing my app under simulator, because I don't have any iOS 6 device and stumbled upon weird problem. I cannot set backgroundColor property of UITableViewCell. If I st this:
cell.contentView.backgroundColor = [UIColor redColor];
it is working only for iOS 6, when I use this:
cell.backgroundColor = [UIColor redColor];
or this
[cell setBackgroundColor:[UIColor redColor]];
it is working only for iOS7.
When I use both cell.contentView
and cell.backgroundColor
it's working for both iOS... shouldn't it be one answer for such a 'easy' property? Or maybe it's some simulator bug?
UPDATE:
If it changes anything in the same tableview and cells I cannot set accessoryType
neither via StoryBoard nor code...
UPDATE2: for some reason setting tableview style to plain deleted all my changes, but grouped showed as expected...
In iOS6 you need to change the cell's backgroundColor in willDisplayCell. This works in iOS7 as well, precluding the need for version-specific code.
- (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
[cell setBackgroundColor:[UIColor redColor]];
}
I don't see the problem in setting the background for the contentView AND directly to the cell. iOS 7 has change a lot this class. If you need to be compatible with old systems then you need to do this type of things.
So yes, you should use both:
cell.contentView.backgroundColor
cell.backgroundColor
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With