Вы вообще не упоминаете об этом, но, судя по вашему упоминанию о segue
, вы используете раскадровку.
При использовании раскадровки есть новый способ показать новый контроллер вида. Подключив UITableViewCell
, используя seque, к новому контроллеру представления в Интерфейсном Разработчике. Когда вы делаете это, нет необходимости использовать didSelectRowAtIndexPath:
, потому что новый контроллер представления будет отображаться автоматически. Однако вы можете подготовить segue
и установить параметры на новом контроллере вида, например:
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// assumes only one type, more extensive checking before cast to
// make it safer is needed.
MyViewController *viewController = (MyViewController *) segue.destinationViewController;
viewController.detailObject = myModelObject;
}
Для любой ячейки таблицы, которая не подключена с помощью segue, вы можете указать свое собственное поведение, используя обычный tableView:didSelectRowAtIndexPath:
.
Не существует правильного пути, просто используйте то, что вам кажется более простым.