Контроллеры просмотра

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

Анатомия интерфейса контроллера просмотра

Контроллер просмотра имеет единственное представление, в котором он размещает Ваше содержание. Когда пользователь поворачивает страницу, UI, предоставленный контроллером просмотра, видим. Контроллер просмотра применяет завихрение страницы к своему представлению controler’s представления, обеспечивая визуальное появление превращаемой страницы.

Навигация, предоставленная контроллером просмотра, является линейной последовательностью страниц. Это хорошо подходит для представления содержания, к которому получают доступ линейным способом, таким как текст романа, и для представления содержания, имеющего естественные разрывы страницы, такие как календарь. Для содержания, к которому пользователь должен получить доступ нелинейным способом, таким как справочник, Вы ответственны за обеспечение логики навигации и UI.

Рисунок 3-1 показывает интерфейс просмотра, реализованный примером приложения. Наиболее удаленное коричневое представление связано с родительским контроллером представления, не самим контроллером просмотра. Контроллер просмотра не имеет никакого собственного UI; однако, в то время как пользователь поворачивает страницу, это действительно добавляет эффект завихрения страницы к своим дочерним элементам. Пользовательское содержание предоставлено контроллерами представления, которые являются дочерними элементами контроллера просмотра.

Рисунок 3-1  представления интерфейса просмотра

Объекты интерфейса контроллера просмотра

Интерфейс просмотра состоит из следующих объектов:

Рисунок 3-2  контроллер просмотра и его связанные объекты

Источник данных обеспечивает контроллеры представления по требованию.

Делегат обеспечивает методы, которые вызывают в ответ на основанные на жесте изменения навигации и ориентации.

Массив контроллеров представления содержит довольное в настоящее время выводящиеся на экран контроллеры представления. Число элементов в этом массиве варьируется в зависимости от опций, переданных контроллеру просмотра.

Массив устройств распознавания жеста заполняется, только если установлен источник данных. Эти устройства распознавания жеста позволяют пользователю повернуть страницы путем ответвления, щелкая, или перетаскивание.

Создание интерфейса контроллера просмотра

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

Создание интерфейса контроллера просмотра Используя раскадровку

Шаблон Page-Based Application Xcode создает новый проект с контроллером просмотра как начальная сцена.

Для добавления контроллера просмотра к существующей раскадровке сделайте следующее:

  1. Перетащите контроллер просмотра из библиотеки. Добавьте сцену контроллера просмотра к своей раскадровке.

  2. В инспекторе Атрибутов, установленном надлежащие опции.

  3. Дополнительно, установите делегата, источник данных или обоих путем соединения соответствующих выходов.

  4. Выведите на экран его как первый контроллер представления путем выбора опции Is Initial View Controller в инспекторе Атрибутов (или представьте контроллер представления в пользовательском интерфейсе в другом отношении.)

Создание интерфейса контроллера просмотра программно

Создать контроллер просмотра программно:

  1. Выделите и инициализируйте контроллер просмотра с помощью initWithTransitionStyle:navigationOrientation:options: метод. Для разовой инициализацией настройки посмотрите Поведение Настройки в Инициализации.

  2. Дополнительно, установите делегата, источник данных или обоих.

  3. Установите начальные контроллеры представления содержания.

  4. Представьте представление контроллера просмотра об экране.

Установка начального контроллера представления

Создаете ли Вы контроллер просмотра в Интерфейсном Разработчике или программно, необходимо установить его начальные контроллеры представления прежде, чем вывести на экран его на экране.

Для установки начального контроллера представления вызовите setViewControllers:direction:animated:completion: метод с массивом, содержащим надлежащее число контроллеров представления.

Настройка поведения в инициализации

Вы передаете значения параметров и опции к initWithTransitionStyle:navigationOrientation:options: метод для настройки контроллера просмотра при инициализации его. Они доступны как свойства только для чтения после инициализации. Можно настроить:

Например, Перечисление 3-1 инициализирует контроллер просмотра с горизонтальной навигацией, позвоночником в центре и переходом завихрения страницы:

Перечисление 3-1  Настраивая контроллер просмотра

NSDictionary * options = [NSDictionary dictionaryWithObject:
            [NSNumber numberWithInt:UIPageViewControllerSpineLocationMid]
    forKey:UIPageViewControllerOptionSpineLocationKey];
 
UIPageViewController *pageViewController = [[UIPageViewController alloc]
    initWithTransitionStyle:UIPageViewControllerTransitionStylePageCurl
      navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal
                    options:options];

Настройка поведения во время выполнения с делегатом

Делегат контроллера просмотра реализует UIPageViewControllerDelegate протокол. Это может выполнить действия, когда ориентация устройства изменяется и когда пользователь перешел к новой странице, и это может обновить расположение позвоночника в ответ на изменение в интерфейсной ориентации.

Поставляющее содержание путем обеспечения источника данных

Предоставление источника данных включает управляемую жестом навигацию. Без источника данных необходимо обеспечить собственный UI для содержания навигации и предоставления, как описано в Поставляющем Содержании путем Установки Контроллера Текущего представления. Источник данных, который Вы обеспечиваете, должен реализовать UIPageViewControllerDataSource протокол.

Методы источника данных вызывают с в настоящее время выводимым на экран контроллером представления и возвращают контроллер представления, которые прибывают прежде или после них. Для упрощения процесса нахождения предыдущего или следующего контроллера представления можно хранить дополнительную информацию в контроллерах представления, таких как номер страницы.

Если источник данных предоставляется, устройства распознавания жеста партнеров контроллера просмотра к его представлению. Эти устройства распознавания жеста позволяют пользователю повернуть страницы путем ответвления, щелкая, и перетаскивание; они доступны как gestureRecognizers свойство.

Для перемещения устройств распознавания жеста в другое представление передайте значение gestureRecognizers свойство к addGestureRecognizer: метод целевого представления. Перемещение устройств распознавания жеста к другому представлению особенно полезно при встраивании контроллера просмотра в большую иерархию представления.

Например, если контроллер просмотра не заполняет все границы экрана, помещать устройства распознавания жеста на большем суперпредставлении может упростить для пользователей инициировать повороты страницы. Перемещение устройств распознавания жеста позволяет пользователям запустить свои жесты где угодно в границах суперпредставления, не только в границах представления контроллера просмотра.

Поставляющее содержание путем установки контроллера текущего представления

Для прямого управления, какое содержание выводится на экран вызовите setViewControllers:direction:animated:completion: метод, передавая массив довольных контроллеры представления для отображения. Число контроллеров представления для передачи варьируется; см. справочную документацию метода для определенных подробных данных.

Этот подход состоит в том, как Вы позволили бы пользователю перейти к определенному расположению в содержании, таком как первая страница или обзор: Вы устанавливаете контроллеры представления непосредственно, в ответ на пользователя, взаимодействующего с UI.

Если Вы не обеспечиваете источник данных, необходимо обеспечить UI для перемещения между страницами, такими как прямые и обратные кнопки. Управляемая жестом навигация доступна только, когда Вы обеспечивают источник данных.

Специальное замечание для справа налево и содержание нижней части к вершине

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

Для использования контроллера просмотра для отображения справа налево или содержание нижней части к вершине от источника данных просто инвертируйте поведение двух методов:

Для справа налево или содержание от начала до конца, Вы обычно хотите установить расположение позвоночника в UIPageViewControllerSpineLocationMax.