Навигация в обратном направлении через ошибку UINavigationController
У меня есть UINavigationController, который входит в ViewController, который загружает данные. Этот ViewController затем переходит к TabViewController. Этот TabViewController имеет две вкладки, каждая вкладка переходит к отдельному UITableViewController. Эти два TableViewController затем переходят к одному и тому же DetailsViewController.
Теперь при переходе назад от DetailVC я получаю эту ошибку:
вложенная анимация толчка может привести к повреждению панели навигации
Завершение перехода навигации в неожиданном состоянии. Дерево подпунктов панели навигации может быть повреждено.
* Завершение работы приложения из-за необработанного исключения "NSInvalidArgumentException", причина: "Невозможно добавить себя как подпредставление".
Также оба TableViews настроены одинаково, но нижнее представление таблицы начинается в верхней части фрейма, поэтому его часть скрыта панелью навигации.
1 ответ
У меня есть табличное представление и контроллер панели поиска на нем. Я создал push segue для ячейки табличного представления и выполнил push при выборе элемента поиска через контроллер поиска программно. Когда сработало исключение обратной навигации. Это исключение происходит, когда вы выполняете тот же самый переход дважды с время.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:
(NSIndexPath*)indexPath
{
if (tableView == self.searchDisplayController.searchResultsTableView)
{
[self performSegueWithIdentifier:@"showDetail"sender:self];
}
}
Поскольку он выполнял одну и ту же передачу дважды, один для выбора ячейки табличного представления, созданного в раскадровке, и другой для выбора ячейки результата поиска. Поэтому проверьте, когда выполнить Segue
- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender
{
if (self.tableView == self.searchDisplayController.searchResultsTableView)
{
[self performSegueWithIdentifier:@"showDetail"sender:self];
return YES;
}
return NO;
}
Это сработало отлично.