Использование пользовательских контроллеров представления для управления различными частями одной иерархии представления - PullRequest
9 голосов
/ 02 декабря 2010

В руководстве по программированию контроллера View указано это относительно использования контроллера View:

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

Я понимаю, что если мы используем несколько пользовательских контроллеров представления для управления частями представления (то есть контроллер представления для управления вложенными представлениями основного представления, которое, в свою очередь, управляется контроллером представления), то методы по умолчанию, такие как:

didReceiveMemoryWarnings
viewWillAppear
viewWillDisappear
viewDidUnload

и т.д.. и т.д. не будут называться.

Помимо этого, есть ли какая-либо иная веская причина, по которой нам не следует использовать несколько контроллеров представления для управления соответствующими подпредставлениями представления?

Документация также предоставляет альтернативное решение, которое гласит:

Примечание: если вы хотите разделить представление иерархия на несколько подрайонов и управлять каждым по отдельности, использовать универсальные объекты контроллера (пользовательские объекты, сходящие с NSObject) вместо просмотра объектов контроллера управлять каждым подрайоном. Тогда используйте один просмотр объекта контроллера для управления универсальные объекты контроллера.

Но нет никакого упоминания о , почему несколько контроллеров представления не должны быть предпочтительными. Мой вопрос:

Почему бы нам не предпочесть это так?

Я обеспокоен, потому что я предпочитаю использовать подкласс UIViewController для управления своими представлениями, поскольку я каждый раз загружаю их из nib и разделяю nib для каждого контроллера представления. Становится легко обслуживать изменения на более поздних этапах проекта. Это неправильно? Должен ли я обязательно изменить свой стиль программирования, или это нормально, если я продолжу этот подход?

Спасибо

Raj

Ответы [ 2 ]

3 голосов
/ 02 декабря 2010

Ну, я бы сказал, "пока это работает", вы можете продолжать делать то же, что и вы! Но чтобы держать вещи "чище", я бы использовал свои собственные объекты. Поскольку ViewControllers разработаны с учетом других общих функций (например, работа с контроллерами навигации и контроллерами панели вкладок), что делает его немного «тяжелым» для простого использования, как вы делаете. Кроме того, как вы упомянули, некоторые события вызываются только тогда, когда представление viewController добавляется в главное окно.

Разве вы не можете использовать свои собственные объекты в Интерфейсном Разработчике? Если вы создаете один (или несколько) UIView IBOutlet (s), он должен работать одинаково.

0 голосов
/ 01 июня 2012

У меня есть приложение, которое использует два UIViewController на одном экране. Дочерний объект является UITableViewController. Я не полагаюсь ни на какое поведение UIViewController дочернего элемента - только методы UITableViewController Это удобно, поскольку в других случаях дочерний UITableViewController управляет всем экраном. И в этом случае он использует методы UIViewController. Сомнительный дизайн? Может быть. Это работало хорошо в течение двух лет. Но я не уверен, что рекомендую этот шаблон.

...