Как переключаться между контроллерами навигации? - PullRequest
6 голосов
/ 15 мая 2010

Ситуация:
У меня есть проект Xcode, основанный на шаблоне «Navigation-Based-Application». Это означает, что у меня есть ОДИН UINavigationController, который управляет UIViewController.

Что я хочу сделать:
Что я хочу сделать, это добавить еще один UINavigationController в мой проект - и иметь возможность переключаться между ними. (Я хочу сделать это, чтобы освободить место для некоторого отдельного несвязанного контента, чтобы на нем не было кнопки «Назад», указывающей назад на контроллер корневого представления.)

Вопрос:
Как добавить еще один UINavigationController в мой проект и переключаться между двумя UINavigationController?

1 Ответ

9 голосов
/ 15 мая 2010

Самый распространенный и естественный способ iPhone OS - это добавить UITabBarController в ваше приложение. Шаблон Xcode Приложение панели вкладок поможет вам в правильном направлении, как его использовать.

Но ...

Если вам не нравится иметь панель вкладок в вашем приложении и вы хотите переключаться между различными UINavigationController экземплярами (или любым UIViewController в этом отношении), вы можете сделать что-то вроде этого.

Сначала вам нужно создать свои экземпляры UINavigationController в соответствующем месте (например, в новом контроллере представления или в вашем Application Delegate, если вы хотите выбрать более легкий путь). Затем вы можете переключаться между контроллерами, просто переключая вид контроллера навигации, который должен быть виден.

Например, в делегате приложения «firstNavigationController» и «secondNavigationController» являются UINavigationController переменными экземпляра:

- (void)showFirstNavigationController {
    [secondNavigationController.view removeFromSuperview];
    [self.window addSubview:firstNavigationController.view];
}

Это просто отобразит первый вместо второго контроллера навигации. Обратите внимание, что этот пример очень прост. Я не учел, что вы должны правильно обрабатывать методы viewWillAppear:, viewDidAppear: и т. Д.

...