I've been recently been working with the UITableView and UITableViewController subclasses. It is an annoyance to maintain two methods that will define what will show up in the table cell and what happens if that table cell is selected.
Imagine having more 10 cells with varying behavior per cell. OK, you coded that. Now, you have to rearrange the order of the cells. Of course, you can use an enum but still, you have to look at two places to determine how the cell is defined and what happens if it is selected. You're gonna have to keep your tableView:cellForRowAtIndexPath: and tableView:didSelectRowAtIndexPath: methods in sync all the time.