I have a customer UITableViewCell whose whole display is drawn indrawRect. When it draws it creates CGLayers so that it can reuse certain pieces when something is changed.
I have changed my UITableViewCellSelectionStyle to “None” because I don’t want the default selected view to cover my drawing.
My problem is that I call setNeedsDisplay in setSelected:animated: for my cell but by the time drawRect is called, setSelected:animated: has already been called again to deselect the cell. In my table view controller didSelectRowAtIndexPath, I call deselectRowAtIndexPath as Apple advises.
EDIT – I have also tried called the setNeedsDisplay on my cell from my table view controller’s (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath but that didn’t change anything.
Any ideas? Thanks.
Use the table cell’s
selectedBackgroundViewproperty. If you assign a custom view to that, it’ll get shown and hidden at the same time as the default selection backgrounds—in other words, without having to wait for thesetNeedsDisplayto get around to callingdrawRect:on the cell itself.