How do I prevent custom UITableViewCells from flashing white on deselecting?

cocoa-touch, core-animation, ios, objective-c, uikit

Solution

It actually animates back to cell background color so you will have to set it too

Add this line in lighten method

self.backgroundColor = [UIColor whiteColor];

and this in darken method

self.backgroundColor = darkColor;

Problem

I have a custom UITableViewCell which changes color based on which row it is in: `TableViewController.m` ``` - (void)willDisplayCell:(GSRSongCell *)cell atIndexPath:(NSIndexPath *)indexPath; { if (indexPath.row % 2 == 0) { [cell lighten]; } else { [cell darken]; } } ``` `CustomTableViewCell.m` ``` - (void)lighten { self.selectedBackgroundView.backgroundColor = [UIColor whiteColor]; self.contentView.backgroundColor = [UIColor whiteColor]; self.primaryLabel.backgroundColor = [UIColor whiteColor]; self.secondaryLabel.backgroundColor = [UIColor whiteColor]; } - (void)darken { UIColor *darkColor = [UIColor colorWithR:241 G:241 B:241 A:1]; self.selectedBackgroundView.backgroundColor = darkColor; self.contentView.backgroundColor = darkColor; self.primaryLabel.backgroundColor = darkColor; self.secondaryLabel.backgroundColor = darkColor; } ``` However, when I call `deselectRowAtIndexPath:animated:YES`, the animation fades to a white color in cells where the `selectedBackgroundColor` should be darker. I then realised that the deselection animation has nothing to do with the `selectedBackgroundColor`; in fact, the deselection animation is actually based on the `tableView.backgroundColor` property! How can I override the deselection animation to fade to the background color of my cells?

Original source