You must update your data source and then call this UITableView method:
- (void)insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation
It will cause
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
table view data source method and update the table by selecting the selected animation.
You would not create a new cell in the didSelectRowAtIndexPath method, as you do in the code you posted.
edited to add information.
indexPaths ( ), :
NSInteger row = [indexPath row];
NSInteger section = [indexPath section];
NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:row+1 inSection:section];
NSArray *indexPaths = [NSArray arrayWithObject:indexPath];