Добавить вид на контроллер навигации при запуске приложения - PullRequest
0 голосов
/ 27 июля 2010

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

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

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

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

Как бы я поступил об этом?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 28 июля 2010

То, что я сделал в своем методе 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 голосов
/ 27 июля 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...