Fixing the stupid bug that took way too long to figure out especially considering how stupid it was
Apparently this is correct:
[tableView deselectRowAtIndexPath:indexPath animated:YES];
And this is not:
[[tableView cellForRowAtIndexPath:indexPath] setSelected:NO animated:YES];
The former will deselect your selected row for real. The latter will “deselect” the row, only to have the row still be selected when you scroll it back into view.
I might have kinda sorta spent hours on this bug.
(Isn’t this what KVO is for? The tableview could be notified when one of the cells changes its selected value and calls deselectRowAtBlahBlah on its own?)