Предварительная загрузка страниц UIPageViewController

Я не могу найти хорошее решение, чтобы UIPageViewController предварительно загрузил окружающие ViewControllers.

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

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
       viewControllerAfterViewController:(UIViewController *)viewController

и после его загрузки thennnn показывает анимацию. Это занимает слишком много времени и не является гладким.

У кого-нибудь есть решение?

Ответ 1

Создайте изменяемый контейнер, и когда вы покажете первое представление, создайте два viewController, которые понадобятся, если пользовательские страницы, если у вас есть объект viewController, спросите его о своем представлении (чтобы он мог загрузить nib и вызвать контроллер "viewDidLoad:". Вам нужно выяснить систему определения элементов управления viewControlers, чтобы вы могли получить требуемый viewController). Вы могли бы сделать тяжелую работу здесь в блоке на dispatch_queue.

С этого момента, когда пользовательские страницы, вы смотрите сначала в контейнере для viewController, а если не нашли, вы должны сделать это в режиме реального времени.

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

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

Ответ 2

Если у вас возникли проблемы с загрузкой страниц до и после запуска viewController при первой загрузке UIPageViewController, см. мой ответ с помощью Swift 1.2.