Используйте
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
-
В
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
когда пользователь нажимает на строку, задайте новую высоту строки в массиве, а затем вызовите перезагрузку tableview, чтобы перерисовать. Он будет вызывать cellForRowAtIndexPath, и, поскольку вы знаете, какая ячейка имеет большую высоту, вы возвращаете большую ячейку для этой строки, а heightForRowAtIndexPath обеспечит ее правильное отображение.