Как правильно организовать пейджинг с динамическим набором страниц

swift

#1

Здравствуйте, у меня есть данные, которые я подгружаю с сервера порциями. Эти данные я отображаю в виде таблиц в UIPageViewController. Но есть проблема, при быстром перелистывании я могу обогнать подгрузку данных с сервера и UIPageViewController заблокируется при отсутствии данных для отображения, а функции перезагрузки или обновления данных, как в tableView у него вроде нет.
Я решал эту проблему следующими способами

  1. Если данные еще не успели загрузиться, то я отображал пустой контроллер с полосой загрузки данных и сохранял этот контроллер для последующего отображения. Как только данные пришли, я обновлял тот пустой контроллер, передав в него загруженные данные. Но проблема в том, что пользователь мог бы перелистнуть дальше, что привело бы к потери предыдущего контроллера и он бы вечно остался в состоянии загрузки. Можно конечно создать массив из контроллеров, данные для которых еще не пришли, а потом пробегаться по ним и обновлять, но я считаю, что это уже попахивает костылями.
  2. Самый банальный, но как по мне самый неправильный - это грузить заранее за 5 страниц новые данные, чтобы пользователь чисто физически не успел попасть в ситуацию, описанную в пункте 1.
  3. Я услышал, что можно использовать UICollectionView для таких целей, но тоже не уверен в правильности данного подхода и пока не думал как реализовать отображение таблицы в UICollectionViewCell

У кого был подобный опыт, подскажите, что вы использовали в такой ситуации?


#2

UICOllectionView единственный правильный вариант! У вас таким образом всегда в конце будет страница загрузки и после подгрузки новых данных, делаете обновление и листаете дальше.