Начиная с 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:
Каждый пользовательский объект контроллера представления вы
создать отвечает за управление всеми
просмотров в одном представлении
иерархия. [...] один на один
соответствие между взглядом
контроллер и взгляды по его мнению
иерархия является ключевым дизайном
рассмотрение. Вы не должны использовать
несколько пользовательских контроллеров представления
управлять различными частями одного и того же
просмотр иерархии.
(из Руководство по программированию контроллера View )
Ваш субконтроллер не будет получать события вращения или viewWillAppear
, viewWillDisappear
и т. Д. (Кроме viewDidLoad
).
Так что Apple советует нам использовать один контроллер представления, управляющий всей иерархией представления (но не запрещает использовать несколько).
Каждый вид все еще может быть пользовательским подклассом UIView. Возможно, вам не нужен другой контроллер представления, а скорее пользовательский вид.