Вернитесь к исходному контроллеру корневого представления из контроллера навигации третьего уровня.

У меня есть несколько раскадровок, как показано ниже:

Раскадровка А

--> Корневой контроллер навигации --> Контейнерный контроллер представления --> Контроллер представления --> Домашний контроллер представления --> Справочник по раскадровке B

Раскадровка Б

--> Контейнерный контроллер представления --> Контроллер навигации --> Контроллер представления --> Справочник C по раскадровке

Раскадровка C

--> Контроллер навигации --> Контроллер представления

Суть в том, что я загружаю приложение и устанавливается rootViewController. Затем я просматриваю приложение и попадаю в Storyboard B, где есть кнопка, которая ведет к Storyboard C. На View Controller в Storyboard C есть кнопка, которую я хочу вернуть к началу приложения.

Как из View Controller в Storyboard C вернуться к Home View Controller в Storyboard A?

Что я пробовал:

[self.navigationController.navigationController popViewControllerAnimated:animated];

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *viewController = [mainStoryboard instantiateViewControllerWithIdentifier:@"HomeScreen"];
[self presentViewController:viewController animated:animated completion:nil];

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *viewController = [mainStoryboard instantiateViewControllerWithIdentifier:@"HomeScreen"];
[UIApplication sharedApplication].keyWindow.rootViewController = viewController;

Все вышеперечисленные 3 возвращаются в нужное место, но затем приложение вылетает с ошибкой EXC_I386_GPFLT.

Я также пробовал несколько других вещей, которые не работали. Я знаю, что это, вероятно, что-то очень простое, и у меня просто плохой день. Любые предложения очень ценятся прямо сейчас.


person Hodson    schedule 12.01.2016    source источник
comment
Я бы предпочел первый метод, в любом случае попробуйте поставить точку останова исключения и проверить, где происходит сбой, а также опубликовать любой журнал сбоев, который вы получите.   -  person Johnykutty    schedule 12.01.2016
comment
Добавление точки останова исключения было одной из первых вещей, которые я сделал, но это не помогло. он просто разбился в файле main.m. Кроме того, я, кажется, не могу найти что-либо в журналах. Мне придется продолжить охоту после обеда.   -  person Hodson    schedule 12.01.2016
comment
если вы добавите какое-либо представление контроллеров представлений в качестве подпредставления, убедитесь, что вы также добавили его в качестве дочернего контроллера представления для получения дополнительной информации stackoverflow.com/questions/25268744/   -  person Johnykutty    schedule 12.01.2016
comment
Мне удалось найти и добавить пару логов, появившихся после сбоя на моем устройстве. Сейчас я посмотрю ваш последний комментарий.   -  person Hodson    schedule 12.01.2016


Ответы (1)


Кажется, я решил это, выполнив метод popViewControllerAnimated: в основном потоке:

[self.navigationController.navigationController performSelectorOnMainThread:@selector(popViewControllerAnimated:) withObject:nil waitUntilDone:nil];
person Hodson    schedule 12.01.2016