2014-08-29 3 views
1

Я разрабатываю приложение, в котором UIViewController (firstViewController) содержит некоторые UILabelsUIButton, A и UIView (подпанель). UIView должен отображать UIViewController (secondViewController), который содержит несколько слоев. Я не могу этого сделать.Отображение UIViewController в другом UIViewController

Что я должен сделать, чтобы отобразить secondViewController в подвид из firstViewController?

+0

Добавить второй контроллер представления в качестве childViewController для первого viewController и добавить представление второго представления в качестве подзадачи. – Akhilrajtr

ответ

4

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

SecondVC *aObjSecondVC = [self.storyboard instantiateViewControllerWithIdentifier:@"SecondVC"]; 
[self.view addSubview:aObjSecondVC.view] 
4

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

[self.subView addSubView:secondViewController.view]; 
+2

Имейте в виду, что если вы сделаете это, вы не получите события 'viewWillAppear:' и 'viewDidAppear:'. 'UIViewController' ** не предназначен для добавления таким образом. Я бы настоятельно советовал этому методу. Взгляните на ответ MANIAK_dobrii, который, по моему мнению, правильно это делает. –

+1

Почему у этого много голосов? Это не правильный способ. – tnylee

6

Вы должны использовать UIViewController сдерживания или родительские/дочерние контроллеры. Вы можете прочитать подробности here.

Самая основная версия:

UIViewController *parentVC = ... 
UIViewController *otherVC = ... // it's view will be added as subview 

[parentVC addChildViewController:otherVC]; 
[parentVC.containerView addSubview:otherVC.view]; // containerView is a view where your child view controller should go 
[otherVC didMoveToParentViewController:parentVC]; 

Если вы только добавить вид Другой вид контроллера как подвид, вид ребенка контроллер не будет получать все события. Например, если вы используете другие методы, предлагаемые здесь (просто добавьте view как subview и ничего более), вы не получите сообщение -viewDidAppear: (и другие), отправленные вашему контроллеру дочернего представления.

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