Я использую раскадровку, и я установил UITabBarController
в качестве корневого контроллера. У меня есть 3 вкладки на панели вкладок, и для первого я имею UINavigationController
. Я хочу, чтобы контроллер корневого представления этого контроллера навигации был динамически установлен: у меня есть два кандидата в контроллере просмотра в зависимости от параметра, предоставленного пользователем.Программируемое изменение корневого контроллера UINavigationController
Я пытаюсь сделать, как это в AppDelegate
:
UIStoryboard *storyboard = self.window.rootViewController.storyboard;
if (condition1) {
UINavigationController *navViewController = [storyboard instantiateViewControllerWithIdentifier:@"navController"];
UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"homeController1"];
[navViewController setViewControllers:@[viewController]];
} else if (condition2) {
UINavigationController *navViewController = [storyboard instantiateViewControllerWithIdentifier:@"navController"];
UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"homeController2"];
[navViewController setViewControllers:@[viewController]];
Но это не работает. В раскадровке у меня нет ни одного не для homeController1 nor
homeController2`. Как я могу это сделать?
Благодаря
Когда вы говорите «это не работает», что происходит, это отличается от ожидаемого? Вы подтвердили, что все переменные не равны нулю? – oltman
@oltman Это означает, что диспетчеры просмотра не загружены ... да, я проверил, что получаю ненулевые ссылки при создании экземпляра из раскадровки – AppsDev