 <p>Here is what I ended up doing based on Wienke's recommendation. I added 3 prototype cells to my storyboard named Cell,Cell2,Cell3.</p> <p>Relevant code:</p> <pre><code>static NSString *CellIdentifier = @"Cell"; static NSString *CellIdentifier2 = @"Cell2"; static NSString *CellIdentifier3 = @"Cell3"; UITableViewCell *cell; if (indexPath.section == 0 &amp;&amp; indexPath.row == 0) { cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; } else if (indexPath.section == 0 &amp;&amp; indexPath.row == 1) { cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier2 forIndexPath:indexPath]; } else if (indexPath.section == 1) { cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier3 forIndexPath:indexPath]; } </code></pre> <p>I also added this to check my dynamic cells and remove any lingering subviews that could be hanging around before adding the new subview.</p> <pre><code> if ([cell.contentView subviews]){ for (UIView *subview in [cell.contentView subviews]) { [subview removeFromSuperview]; } } </code></pre>