2013-12-04 3 views
1

Мои приложения всей навигационной системы построены вокруг навигационного контроллера. Все мои вклики попадают туда и обратно. У меня есть система «drawer» системы меню, которая выходит с левой стороны, которая отличается от моего настраиваемого контроллера навигации. В меню я могу получить доступ к нескольким областям приложения. Некоторые из этих областей требуют использования TabBarController. Когда я добираюсь до этого TabBarController, он имеет от 2 до 4 вкладок, а каждый из них - собственный VC. На каждой из этих вкладок есть контент, который может быть нажат, что приведет к нажатию новой страницы на навигационный контроллер.Добавление UINavigationController в UITabBarcontroller внутри UINavigationController?

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

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

Каков наилучший способ настроить что-то подобное? Имейте в виду, что я никогда на самом деле не нажимаю контроллер панели управления на мой навигационный контроллер таким образом, чтобы вы могли вернуться назад. Это базовые страницы, которые позволяют пользователю перемещаться.

+0

Вы можете использовать вид вкладок как вид корневой для всего приложения, а затем вид корня для каждой вкладки является навигационный контроллер? – nhgrif

+0

@nhgrif Я просмотрел этот метод, но столкнулся с некоторыми проблемами. Если я внедряю все приложение в TabBarController, он запускается только с одной вкладкой, которая является начальным навигационным контроллером. У меня есть только панель вкладок на определенных страницах, и у этих страниц есть несколько вкладок. Это означает, что большую часть времени мне понадобится скрытая панель вкладок, но как я могу показать панель вкладок только на определенных страницах, а затем добавить несколько вкладок? Как я уже сказал, у моего приложения есть система меню «ящик», поэтому на странице панели вкладок есть пункт меню на панели навигации. Это должно быть доступно на всех вкладках. – Jonathan

ответ

1

Кажется, вы путаете контроллеры просмотра с контейнером контроллера вида.

TabBar и панель навигации - контейнеры UIViewController, в отличие от обычного UIviewcontroller, у них есть дополнительные функции для переадресации обратных вызовов/делегатов на их дочерние контроллеры. (например, viewDidAppear, shouldAutoRotate и т. д.)

В чем разница? UIViewController обрабатывает вращение встроенных представлений, а Контейнер обрабатывает вращение встроенных контроллеров представления.

apple's Вот ссылка с addional информации

, кажется, вы добавляете rootview-х контроллеров зрения друг на друга. Вместо этого используются методы

 
-(void)addViewController:(UIViewController*)vc toViewController:(UIVIewController*)baseVC{ 
    [vc willMoveToParentViewController:baseVC]; 
    [baseVC addChildViewController:vc]; 
    [baseVC.view addSubview:vc.view]; 
    [vc didMoveToParentViewController:baseVC]; 
} 

С этим вы можете встраивать UIViewcontrollers до глубины n. Не только 3 уровня (что ваш случай)

Теперь в вашем контексте:

 
[self addViewController:tabBarController toViewController:rootNavigationController]; 
[self addViewController:childnNvigationController toViewController:tabBarController]; 
Смежные вопросы