Ответ 1
Начиная с iOS 5
"Контроллеры контейнеров" добавлены в iOS 5. Вы можете добавить контроллер представления как дочерний элемент другого с помощью addChildViewController:
.
Вы также несете ответственность за добавление своего представления в родительское представление.
Все документально подтверждено документацией iOS SDK: Внедрение настраиваемого контроллера просмотра контейнеров.
Чтобы добавить контроллер детского представления:
childViewController.frame = ...
[self.view addSubview:childViewController.view];
[self addChildViewController:childViewController];
[childViewController didMoveToParentViewController:self];
и удалить его:
[self willMoveToParentViewController:nil];
[self.view removeFromSuperview];
[self removeFromParentViewController];
До iOS 5
Можно загрузить другой контроллер представления и добавить его представление в виде подсмотра другого вида контроллера.
UIViewController *subController = ...
[self.view addSubview:subController.view];
Хотя это не рекомендуется рекомендациями Apple:
Каждый пользовательский объект контроллера просмотра create отвечает за управление всеми взглядов в одном представлении иерархия. [...] Индивидуально соответствие между представлением контроллер и представления в его представлении иерархия - ключевой дизайн рассмотрение. Вы не должны использовать несколько настраиваемых контроллеров управлять разными частями того же иерархию представлений.
(из Руководство по программированию контроллера просмотра)
Ваш субконтроллер не будет принимать события вращения или viewWillAppear
, viewWillDisappear
и т.д. (кроме viewDidLoad
).
Итак, Apple советует нам использовать единый контроллер представления, управляющий всей иерархией представлений (но не запрещает использовать несколько).
Каждое представление может по-прежнему являться пользовательским подклассом UIView. Возможно, вам не нужен другой контроллер представления, а пользовательский вид.