 <p>My mistake was implementing the delegate method:</p> <pre><code>- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath </code></pre> <p>instead of the one I meant to implement: </p> <pre><code>- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath </code></pre> <p>Hence only being called on the second cell being tapped, because that was when the first cell would be <strong>de</strong> selected. Stupid mistake made with the help of autocomplete. Just a thought for those of you who may wander here not realizing you've made the same mistake too.</p>