PrepareForSegue не вызывается, когда выбрана строка UITableView?
Я установил UITableView с помощью NSFetchedResultsController, который отображает несколько прототипов UITableViewCells. Я подключил push-сегу от моего UITableViewCell к моему DetailViewController.
В моем TableViewController я выполнил оба варианта:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"%s", __PRETTY_FUNCTION__);
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
NSLog(@"%s", __PRETTY_FUNCTION__);
}
Когда я запускаю приложение и нажимаю на строку в таблице, мое приложение только вызывает:
[TableViewController tableView:didSelectRowAtIndexPath:]
[TableViewController tableView:didSelectRowAtIndexPath:]
[TableViewController tableView:didSelectRowAtIndexPath:]
Если я удалю segue и перевяжу его с UIBarButtonItem в DetailViewController, тогда вызов будет вызван правильно, может кто-нибудь подумать, чего я не хватает?
EDIT:
Добавлено:
- (IBAction)tester:(id)sender {
[self performSegueWithIdentifier:@"SEGTEST" sender:nil];
}
и подключил его к UIButtonBarItem, который называется "тестер", и он работает, я просто не могу заставить его загореться, когда я связываюсь с UITableViewCell с контроллером.
Ответы
Ответ 1
После небольшого рытья я в конце концов обнаружил, что идентификатор UITableViewCell
был установлен неверно на "CELL_ID
", когда он должен был быть "PLANTCELL_ID
".
Сом для тех, кто считает, что выбор UITableViewCell
в UITableView
не вызывает связанный сегмент, проверить, правильно ли установлен идентификатор вашей ячейки в раскадровке и tableView:cellForRowAtIndexPath:
.
Ответ 2
Перезапустите свой segue из самого ViewController
и дайте ему имя.
Затем в методе didSelectRow
вызывается
[self performSegueWithIdentifier:@"yourSegueName"];
и посмотреть, срабатывает ли он.