Кажется, я не получаю этот SIGABRT, который я продолжаю получать. У меня есть приложение для раскадровки iOS, а в раскадровке у меня есть UITableViewController. Теперь я могу взять камеру TVC и заставить ее нажимать контроллер просмотра "segue", но что, если мне нужно остановить действие "segue" на определенных условиях? По-видимому, вы не можете, так как метод prepareForSegue: sender: не разрешает его, и он кажется единственным обратным вызовом, который вызывается при завершении перехода.
Итак, я догадался, что могу пойти в tableView: didSelectRowAtIndexPath: и программно выполнить segue. Субоптимальный, но все же...
Ну, оказывается, я догадался, что ошибаюсь. Или, по крайней мере, я делаю что-то неправильно. Самый очевидный способ сделать это -
- (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];
}
"работает". Котировочные знаки указывают на то, что это явно не так, как должен выполняться такой переход.
Теперь: идеи?