2013-06-06 4 views
1

Я создаю приложение, у которого есть мастер при первом запуске приложения. После этого он должен представить UITabBarController.Переопределение rootViewController из ViewController

Во второй раз, когда пользователь запускает приложение, он должен просто представить UITabBarController.

Поскольку UITabBarController должен быть rootViewController, существует ли способ переопределить приложение rootViewController, поэтому, когда мастер завершится, появляется TabBarController?

Или есть лучший способ выполнить это поведение?

Спасибо!

ответ

1

Да, вы можете переопределить контроллер корневого окна окна с любого контроллера, который в настоящее время отображается. Вы получите ссылку на окно с self.view.window. Таким образом, когда ваш мастер заканчивается, просто экземпляр контроллера бар вкладки и изменить корень:

UITabBarController *tbc = [self.storyboard instantiateViewControllerWithIdentifier:@"tbc"]; // or other instantiation method if not using a storyboard 
self.view.window.rootViewController = tbc; 

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

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
UITabBarController *tbc = [sb instantiateViewControllerWithIdentifier:@"tbc"]; // or other instantiation method if not using a storyboard 
self.window.rootViewController = tbc; 
+0

thx! который работал как шарм !! :) – smashing

1

Используйте unwind segue. Представляя свое приложение, нажмите UITabBarController на стек навигации. Если это первый запуск вашего приложения, отключите анимацию, нажав на контроллер панели вкладок, и нажмите на первый экран своего мастера поверх него. Если это не первый запуск, нажмите контроллер панели вкладок с анимацией.

Когда пользователь переходит к завершению работы мастера, используйте разматывание, чтобы вернуться к контроллеру панели вкладок.

Смежные вопросы