You change the background color in the content view, which is only part of the cell view.

Change the background color of the whole cell. However, you cannot do this in your own tableView:didDeselectRowAtIndexPath:because it will not work as described here .
. ( backgroundColor, UIView), tableView:willDisplayCell:forRowAtIndexPath: , tableView:cellForRowAtIndexPath: .
, tableView:didSelectRowAtIndexPath:, ivar .
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
_savedIndex = indexPath;
[tableView reloadData];
}
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([_savedIndex isEqual:indexPath]) {
cell.backgroundColor = [UIColor grayColor];
}
}