Как подключить выход DataSource для Page View Controller с помощью Storyboard в Interface Builder

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

Создание интерфейса контроллера просмотра страницы с помощью раскадровки

Шаблон Xcode на основе страницы создает новый проект с контроллером просмотра страниц в качестве начальной сцены.

Чтобы добавить контроллер просмотра страницы в существующую раскадровку, сделайте следующее:

  • Извлеките контроллер библиотеки страниц из библиотеки. Добавьте сцену контроллера просмотра страницы в свою раскадровку.
  • В инспекторе атрибутов настройте соответствующие параметры.
  • Необязательно, установите делегат, источник данных или и то, и другое, подключив соответствующие выходы.
  • Отобразите его как первый контроллер просмотра, выбрав опцию "Исходный контроллер просмотра" в инспекторе атрибутов (или представив контроллер представления в вашем пользовательском интерфейсе по-другому.)

Затем я определил подкласс UIPageViewController, например,

@interface DetailsPageViewController : UIPageViewController <UIPageViewControllerDataSource>

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

Может ли кто-нибудь помочь?

Ответы

Ответ 1

Обратите внимание, что в документации Apple указано, что UIPageViewController обычно не подклассов. Ваш UIPageViewControllerDataSource не должен быть подклассом View Viewer. Вы можете сделать его подклассом NSObject.

Обычно только те, которые отображаются на раскадровке, а именно элементы UI, перечислены в схеме документа, которая отображается слева от раскадровки (при условии, что она не была скрыта). Если ваш делегат/источник данных еще не существует, его можно поместить туда, перетащив "объект" (желтый куб) в контур документа в соответствующей сцене.

Затем щелкните объект, который вы только что добавили, и используйте панель Identity Inspector, чтобы изменить свой конкретный класс на ваш класс источника данных. Затем он доступен для использования в качестве цели соединения обычным способом, перетаскивая строку из инспектора подключений на него.

Ответ 2

Мне не удалось найти способ сделать это в IB. Приходится использовать следующее:

self.delegate=self;
self.dataSource=self;