1

Я новичок в iOS, и я работаю с раскадровки.Stacked UINavigationController

У меня есть приложение с некоторыми видами.

My rootViewController (1) - это UINavigationController, который подключается к другим представлениям. В какой-то момент в приложении (2) я включаю компонент (SWRevealViewController, стиль боковой стороны Facebook), который является экземпляром UINavigationController, поэтому у меня есть два UINavigationControllers, вложенные друг в друга. Я хочу удалить или изменить первый UINavigationController на новый (2) и просто иметь только один. Доступ ко всем представлениям осуществляется через пользовательские сегменты.

Detailed Image Here

Я считаю, что решение изменить RootViewController перед загрузкой вида (2), и установить вторую UINavigationController в качестве основного приложения.

Detailed Image Here

Я попытался решить это доступ по:

[UIApplication delegate].window.rootViewController = myController; 

, но у меня есть только nil или пустое окно.

Я прочитал много пост о том, что решение может быть в моем AppDelegate в методе

- (void) applicationDidFinishLaunching: (UIApplication *) application

Я не могу понять, как применить его к моей структуре, так как этот метод вызывается, когда приложение запускается.

Я считаю, что мое приложение для работы не так.

Любая обратная связь или помощь приветствуются! Спасибо заранее.

ответ

0

Это нормально изменить контроллер корневого представления с другого контроллера, но ваш код неверен. Оно должно быть:

[UIApplication sharedApplication].delegate.window.rootViewController = myController; 

Если вы делаете это действие от контроллера, чей вид в настоящее время на экране, вы можете сделать это таким образом, вместо этого:

self.view.window.rootViewController = myController; 

Это должно работать до тех пор, как myController был правильно создан.

+0

Я попытался поставить эти утверждения в свой контроллер, но получаю черный экран: self.view.window.rootViewController = self; [self.view.window makeKeyAndVisible]; –

+0

Кроме того, значение self.view.window.rootViewController равно null –

+0

@FrandelaRosa Is self.view.window также null? Не должно быть, если у контроллера, у которого есть этот код, есть его вид на экране. – rdelmar

0

Возможно, вы удалите (1) или выгрузите его в другой контроллер просмотра, который скрыт, и как только пользователь вернется в точку, в которой вы хотите (1) назад, вы можете загрузить его обратно. Это можно сделать в - (void) applicationDidFinishLaunching: (UIApplication *) application.