uipageviewcontroller ios xcode

Page View контроллеры

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

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

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

Page view интерфейс содержит следующие объекты:

  • Делегат (необязательно). (delegate).
  • Источник данных (необязательно). (dataSource).
  • Массив текущих контроллеров видовых представлений. (NSArray* viewControllers)
  • Массив распозноваемых жестов. (NSArray* gestureRecognizers).

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

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

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

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

Создание интерфейса Page View контроллера.

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

Создание интерфейса Page View контроллера, используя storyboard

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

Чтобы добавить контроллер постраничного представления видов в существующий storyboard, выполните следующие действия:

  1. Перетащите Page View контроллер из библиотеки. Добавьте Page View контроллер в свой storyboard.
  2. В инспекторе Атрибутов настройте соответствующие параметры.
  3. При желании установите делегат, источник данных, или и то и другое, подключив соответствующие IBOutlet.
  4. Отобразите его в качестве первого контроллера представления вида, выбрав опцию Is Initial View Controller в инспекторе Атрибутов (или представьте контроллер представления в пользовательском интерфейсе другим образом.)

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

Чтобы создать контроллер представления страницы программно:

  1. Создайте и инициализируйте контроллер постраничного представления с помощью метода initWithTransitionStyle:navigationOrientation:options:.
  2. Установите, при необходимости, источник данных и делегат.
  3. Установите исходные контроллеры видов контента.
  4. Отобразите контроллер постраничного представления видов на экране.

Установка исходных контроллеров видов контента

Если вы создаете контроллер постраничного представления видов в Interface Builder или программно, вам необходимо установить его исходные контроллеры видовых представлений перед показом его на экране. Установка осужествляется с помощью метода setViewControllers:direction:animated:completion: в котором передается массив содержащий соответствующее количество контроллеров видов.

Замечание: Если Page View контроллер не имеет исходного контроллера видовых представлений, он возвращает NO из shouldAutorotateToInterfaceOrientation: для всех ориентаций, возбуждая исключение.

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

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

  • Направление для навигации переходов: горизонтально или вертикально.
  • Расположение корешка книги: по любому краю или по центру.
  • Стиль перехода: сворачивание страницы или прокрутка.

Пример настройки Page View контроллера:

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

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

Делегат Page View контроллера реализует протокол UIPageViewControllerDelegate. Он может выполнять действия, когда ориентация устройства изменяется и, когда пользователь переходит на новую страницу, он может установить позицию корешка книги в ответ на изменение ориентации интерфейса.

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

Обеспечение источником данных позволяет жестам управлять навигацией. Без источника данных, вы должны предоставить собственный пользовательский интерфейс для навигации и поставлять контент, как описано в "Обеспечение контентом через установку текущего контроллера вида". Источник данных, предоставленный вами, должен реализовать протокол UIPageViewControllerDataSource.

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

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

Обеспечение контентом через установку текущего контроллера вида

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

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

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

 
 
homeЗаметили ошибкукарта сайта 
   Made on a Mac