Я искал много, много мест и еще не нашел хорошего примера кода, показывающего, как предварительно загрузить «следующую» страницу в UIPageViewController. Есть несколько ответов на SO, в которых подробно изложены некоторые теоретические способы сделать это (см. this question), но никто еще не опубликовал рабочий пример.Предварительная загрузка следующей страницы в UIPageViewController
В рабочем процессе моего приложения я показываю 1 страницу на экран, и я хочу, чтобы «следующий» экран был предварительно загружен, потому что, поскольку это так, прокрутка на следующую страницу может быть очень медленной, иногда требуется 2 щелчка (если вы прокручиваете слишком быстро), чтобы следующая страница была отображена и показана. Это обеспечивает плохой пользовательский интерфейс. Меня не волнует предварительная загрузка «предыдущих» или любых других экранов, поскольку типичный рабочий процесс будет состоять в том, что пользователи остаются на экране некоторое время, прежде чем переходить на следующий экран (справа). Я использую слайд-анимацию (не скручиваюсь). Я создаю все представления программно и не использую IB вообще.
Я пытался хранить некоторые UIViewControllers в NSMutableArray и загружать контроллеры оттуда, но сложно работать правильно и, похоже, ничего не ускоряет. Должен быть хороший способ сделать это.
Любая помощь очень ценится.
Вы нашли решение для этого? У меня такая же проблема, и я вижу заметное отставание при прохождении к следующему контроллеру. – mattsson
Сортировка, но ответ очень специфичен для моей реализации. Поскольку я много работал с UIPageViewController с момента публикации этого вопроса, я обнаружил, что это очень сложный вопрос. В основном, мои проблемы больше касались запросов к БД для получения правильных данных, что замедляло каждую страницу вниз. Я смог оптимизировать мои очереди страниц, предварительно вычисляя данные из БД и рисуя свои представления с помощью автоматической компоновки вместо того, чтобы возиться с фреймами - это очень помогло. Во-вторых, у меня было много изображений, чтобы показать, поэтому я сохранил их в NSMutableArray непосредственно на «основном» контроллере представлений (родительский салфетки). – DiscDev
Мое «решение» закончилось тем, что ... продолжайте ждать, пока Apple выйдет с более быстрыми телефонами .... хахаха. На iPhone 6/6s больше нет отставания.Я оптимизировал некоторые из кода для извлечения базы данных, которые будут выполняться один раз, когда сначала будет создан контроллер страниц, и это очень помогло, но основные улучшения скорости были получены от более быстрых процессоров и большего количества оперативной памяти, а также поэтапная поддержка iPhone 4/4s =) – DiscDev