Как подключить выход 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;