0

У меня есть приложение, которое имеет UITabBarController, один из вкладок которого настроен для контроллера навигации.Добавить представление в контроллер навигации при запуске приложения

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

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

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

Как бы я это сделал?

Спасибо.

ответ

0

Так что я сделал в моем методе applicationDidFinishLaunching был:

// get the array of tabs 
NSArray *tabBarArray = tabBarController.viewControllers; 
// in my case the navigation controller I'm interested in is in the 4th tab 
UINavigationController *navigationController = [tabBarArray objectAtIndex:4]; 

if(someLogic == true) { 
    ViewController1 *viewController1 = [[viewController1 alloc] initWithNibName:@"View1" bundle:nil]; 
    [navigationController pushViewController:viewController1 animated:NO]; 
    [viewController1 release]; 
} 
else { 
    ViewController2 *viewController2 = [[viewController2 alloc] initWithNibName:@"View2" bundle:nil]; 
    [navigationController pushViewController:viewController2 animated:NO]; 
    [viewController2 release]; 
} 

Все работает хорошо.

0

Вы на правильном пути. В методе делегата applicationDidFinishLaunching вам нужно посмотреть, что у вас есть, и выбрать правильную вещь, чтобы установить его в качестве контроллера представления корневого каталога UINavigationController.

Я предполагаю, что это экран входа в систему или что-то еще? И если у вас есть кешированный логин с более ранней сессии, вы не показываете его снова? Это оно?

Если вы посмотрите на этот метод в делетете приложения, вы увидите, где контроллер корневого представления по умолчанию получает экземпляр и помещается в навигационный контроллер. Просто продублируйте этот код внутри оператора if(). Я сделал это, это просто.