У меня есть контроллер представления контейнера, который обрабатывает 2 навигационных контроллера одновременно.Мне иногда нужно переместить несколько контроллеров представления из одного стека навигации в нижнюю часть другого стека навигации.
Проблема в том, что я получаю исключение UIViewControllerHierarchyInconsistency
, которое впервые появилось в iOS 5. ЯЯ не уверен, как обойти это.Использование методов push / pop работает нормально, однако мне нужно вставить что-то дальше в стек, чтобы получить доступ к самому массиву контроллера представления.Код:
- (void)swapViewController:(UIViewController *)controller {
NSMutableArray *leftStack = [NSMutableArray arrayWithArray:_leftNavController.viewControllers];
NSMutableArray *rightStack = [NSMutableArray arrayWithArray:_rightNavController.viewControllers];
if ([leftStack containsObject:controller]) {
// Left to right
[leftStack removeObject:controller];
[rightStack addObject:controller];
[_leftNavController setViewControllers:leftStack];
[_rightNavController setViewControllers:rightStack];
} else {
// Right to left
[rightStack removeObject:controller];
[leftStack addObject:controller];
[_rightNavController setViewControllers:rightStack];
[_leftNavController setViewControllers:leftStack];
}
}
Полное исключение:
*** Terminating app due to uncaught exception 'UIViewControllerHierarchyInconsistency', reason: 'child view controller:<MyViewController: 0x6c4e7f0> should have parent view controller:<UINavigationController: 0x6a5d100> but requested parent is:<UINavigationController: 0x6a58c10>'