Что делать с "Завершением перехода навигации в непредвиденном состоянии. Дерево подпредставлений панели навигации может быть повреждено". - PullRequest
7 голосов
/ 25 марта 2011

Я пишу приложение для iPhone, используя Appcelerator Titanium Mobile. Я скрываю и показываю группу вкладок, основываясь на том, какое окно имеет фокус.

dashWin.addEventListener("focus",function(e) {
    if (dashWin.tabGroupVisible == true) {
        dashWin.tabGroupVisible=false;
        tabGroup.animate({bottom:-50,duration:500});
    }
});

Приведенный выше код скрывает группу вкладок, когда dashWin получает событие фокуса. Тем не менее, я вижу это сообщение в консоли Titanium, когда событие запускается во время работы в симуляторе iPhone:

Завершение перехода навигации в непредвиденном состоянии. Дерево подпредставлений панели навигации может быть повреждено.

Поиск в Google приводит к одному результату: Другой вопрос StackOverflow , который может иметь подсказку о том, что происходит.

Ответы [ 4 ]

3 голосов
/ 27 января 2014

Я получил эту ошибку, когда связал Action Segue или Selection Segue из одного представления в другое представление через раскадровку и снова выполнил ту же передачу программным способом, что заставляет контроллер навигации выполнять один и тот же переход дважды.2 решения для этого случая:

  1. Удаление кода, который выдвигает представление.Просто позвольте раскадровке выполнить переход для вас.Это хорошо для большинства ситуаций.
  2. Замените Action Segue или Selection Segue на Manual Section и сделайте - (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender самостоятельно.Это решение может оказаться полезным, если вы хотите настроить поведение segue в соответствии с отправителем.
2 голосов
/ 02 апреля 2011

Обычно группа вкладок выступает в качестве корня навигации вашего приложения.Когда пользователь касается вкладки, окно этой вкладки становится сфокусированным.

Далее, когда пользователь запускает действие, требующее появления нового окна, оно обычно отображается либо модально, либо сверху (в смысле стека навигации)текущее окно.В последнем случае скажите текущей вкладке открыть новое окно.

Если вы установите для свойства tabBarHidden значение false (при создании нового окна), панель вкладок будет скрыта для вас, когда новое окнооткрывается текущей вкладкой.

Подойдет ли вам этот более стандартный подход?

0 голосов
/ 31 июля 2014

Недавно я столкнулся с той же проблемой. Причиной было: -Я пытался дважды открыть контроллер представления по ошибке. Вы можете проверить этот сбой, установив точки останова на контроллерах push и pop View

0 голосов
/ 10 июня 2013

У меня было segues, которые возвращались к моему главному навигационному контроллеру, который вызывал это. Я исправил проблему, установив основной контроллер навигации обратно на вершину стека. Вот код:

- (void) viewDidAppear:(BOOL)animated
{
    [self.navigationController popToRootViewControllerAnimated:NO];
}
...