2015-08-28 4 views
0

У меня есть UIViewController, в котором есть UITabBar. Я пытаюсь подражать UITabBarController.UIViewController в UIViewControllers

Мой вопрос: как установить или UIViewController всякий раз, когда выбран TabBarItem?

Я смущен относительно того, как установить UIViewController внутри моего UIViewController, который пытается имитировать UITabBarController.

Пожалуйста, не спрашивайте меня, чтобы использовать UITabBarController

+1

так у не знаю, как поставить точку зрения внутри зрения? Сделайте контейнерный просмотр с 2 дочерними видами в нем, и это сделает трюк? ... –

+3

Вы можете использовать UIContainerView для обработки изменений между несколькими viewControllers –

ответ

1

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

YourViewController *childViewController = [[YourViewController alloc] init]; 

UIView *containerView = //some view in your view hierarchy 
childViewController.view.frame = containerView.bounds; 

[self addChildViewController: childViewController]; 
[containerView addSubview:childViewController.view]; 
[childViewController didMoveToParentViewController:self]; 

Если у вас хотим страницы между контроллерами зрения ребенка, вы можете использовать UIPageViewController в качестве контроллера зрения корня ребенка или же брать этот код из apple documentation:

- (void) cycleFromViewController: (UIViewController*) oldC 
     toViewController: (UIViewController*) newC { 

[oldC willMoveToParentViewController:nil];      // 1 
[self addChildViewController:newC]; 

newC.view.frame = [self newViewStartFrame];      // 2 
CGRect endFrame = [self oldViewEndFrame]; 

[self transitionFromViewController: oldC toViewController: newC // 3 
     duration: 0.25 options:0 
     animations:^{ 
     newC.view.frame = oldC.view.frame;      // 4 
     oldC.view.frame = endFrame; 
     } 
     completion:^(BOOL finished) { 
     [oldC removeFromParentViewController];     // 5 
     [newC didMoveToParentViewController:self]; 
     }]; 
} 
+0

Спасибо. Я использую '[containerView addSubview: childViewController.view];' изменить мнение, это плохая практика? – JayVDiyk

1

(1) Для того, чтобы узнать подробно, я хотел бы предложить вам пройти:

Создание пользовательских Container View Controllers - https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html#//apple_ref/doc/uid/TP40007457-CH18-SW6

И

WWDC 2011 Сессия Видео - Session 102 - Implementing UIViewController Containment.

(2) Для быстрого обучения, пройти: Using Multiple ViewControllers on a Single Screen in iOS

Демонстрационный проект на мерзавца: multiple-viewcontrollers

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