Кажется, я не получаю этот SIGABRT, который продолжаю получать. У меня есть это приложение для раскадровки iOS, и в раскадровке у меня есть UITableViewController. Теперь я могу взять ячейку TVC и заставить ее выдвигать контроллер просмотра «segue», но что, если мне нужно остановить действие «segue» при определенных условиях? По-видимому, вы не можете этого сделать, поскольку метод prepareForSegue: sender: не допускает этого, и, похоже, он является единственным обратным вызовом, который вызывается при выполнении перехода.
Итак, я догадался, что могу перейти к tableView: didSelectRowAtIndexPath: и выполнить переход программно. Неоптимальный, но все же…
Ну, оказывается, я не угадал. Или, по крайней мере, я делаю что-то не так. Самый очевидный способ сделать это будет
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self performSegueWithIdentifier:@"TheOtherIdentifier" sender:self];
}
но все приложение зависает с SIGABRT, который не дает никакой полезной информации (и да, я уверен, что именно эта строка вызывает сбой приложения, я проверил с помощью отладчика :) Более того, VC я при попытке загрузки правильно установлен идентификатор, так как следующий код
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UIViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"TheOtherIdentifier"];
[self.navigationController pushViewController:vc animated:YES];
}
"работает". Кавычки указывают, что это явно не тот способ, которым должен быть выполнен такой переход.
Теперь: идеи?