У меня похожая проблема в приложении, которое я сейчас использую. Моим решением было сохранить ссылку на загруженные предыдущий и следующий контроллеры как свойства моего корневого контроллера представления, а затем просто загрузить представление оттуда. Я не использую PageViewController, потому что клиент настоял, чтобы у было , чтобы он выглядел как FlipBoard ... поэтому я также кеширую результирующую GLTexture. Это должно работать аналогично, просто сохраните следующую и предыдущую страницу при загрузке текущей и передайте этот контроллер в свой «loadNextPage» или любым другим способом.
РЕДАКТИРОВАТЬ: Вот пример (который я упростил) из моего проекта
Первая загрузка (NH - префикс для моей программы, поэтому вам нужно будет заменить ваши собственные классы):
NHViewController *child = [NHViewController loadPageNum:actualNum];
[self.view addSubview:child.view];
self.curController = child;
child.delegate = self;
[self initializePages:NHPageLoadBoth];
Последующие загрузки (переворачивание страницы):
NHPageLoadSettings pageToLoad = NHPageLoadNext;
if(direction == NHPageDirectionNextPage)
{
self.prevController = self.curController;
self.curController = self.nextController;
self.nextController = nil;
}
else
{
self.nextController = self.curController;
self.curController = self.prevController;
self.prevController = nil;
pageToLoad = NHPageLoadPrev;
}
UIView *nextView = self.curController.view;
[self.view addSubview:nextView];
[mCurView removeFromSuperview];
mCurView = nextView;
[self initializePages:pageToLoad];
Инициализация страниц:
- (void)initializePages:(NHPageLoadSettings)pagesToLoad
{
if(pagesToLoad & NHPageLoadNext)
{
NSUInteger nextPageNum = [self.curController.pageNum unsignedIntegerValue]+1;
self.nextController = [NHViewController loadPageNum:nextPageNum];
}
if(pagesToLoad & NHPageLoadPrev)
{
NSUInteger prevPageNum = [self.curController.pageNum unsignedIntegerValue]-1;
self.prevController = [NHViewController loadPageNum:prevPageNum];
}
}
Таким образом, у вас всегда будут готовы соседние страницы. Затем вместо того, чтобы создавать их в методе, который извлекает следующую или предыдущую страницу в UIPageViewController, просто передайте self.nextController или self.prevController.