iPhone - вложенные представления и контроллеры - PullRequest
1 голос
/ 29 мая 2010

Возможно ли иметь один экран iPhone с его представлением, загруженным из xib с помощью UIViewController этого экрана, но затем другой UIView внутри этого экрана с содержимым, загруженным из отдельного файла xib? Если да, возможно ли обрабатывать события этого вложенного представления отдельным пользовательским подклассом UIViewController от остальной части экрана? Если обе эти вещи возможны, целесообразно ли их также?

1 Ответ

7 голосов
/ 29 мая 2010

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

Контроллеру представления с целью загрузки других контроллеров представления, например контроллера навигации, требуется некоторое пространство экрана для себя, а остальное используется для загрузки другого контроллера представления. Это хорошо. Критерии здесь таковы, что только один контроллер представляет контент, а другой - навигацию.

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

Что касается общего случая разделения экрана между двумя контроллерами представления, которые представляют контент, Apple предлагает, чтобы у вас был один класс, производный от UIViewController, управляющего представлениями. Если представление является достаточно сложным, чтобы гарантировать другие контроллеры, то получайте их из NSObject и попросите главный контроллер представления управлять дочерними контроллерами вместе с представлениями. Дочерние контроллеры будут иметь главный контроллер в качестве делегата, а главный контроллер будет передавать представления дочерним контроллерам для управления, но не для собственного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...