iPad - UIPageViewController - опция типа "dequeueReusableCellWithIdentifier" - PullRequest
3 голосов
/ 24 октября 2011

Я создаю приложение для показа книги, используя UIPageViewController (чтобы иметь анимацию перелистывания страниц по умолчанию, что очень приятно) Я поддерживаю все данные, связанные с каждой страницей, в форме основных данных.В моем MyModelController.m файле, под методом init, я извлекаю все данные и инициализирую массив pageData.Но книга, которую я собираюсь показать, огромна.Итак, есть ли способ сделать что-то вроде dequeueReusableCellWithIdentifier, чтобы в память загружались только нужные страницы?

Пожалуйста, исправьте меня, если мои ожидания неверны.

Ответы [ 4 ]

2 голосов
/ 31 октября 2011

Установите начальный вид контроллера, используя UIPageViewController's

-setViewControllers:direction:animated:completion:

Затем реализуйте следующие методы UIPageViewControllerDataSource :

– pageViewController:viewControllerBeforeViewController:
– pageViewController:viewControllerAfterViewController:

Эти методы позволяют вам предоставить UIPageViewController контроллерам представления до и после текущего контроллера представления.

Таким образом, вы сохраняете в памяти только один контроллер вида (и соответствующие данные модели). Я уверен, что это делает некоторое кеширование за кулисами, но если это так, то оно будет освобождено, когда сработало предупреждение о нехватке памяти.

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

Если вы создадите новый проект на основе UIPageViewController в Xcode 4.2, вы увидите, что в шаблоне по умолчанию есть код, демонстрирующий это.

1 голос
/ 01 ноября 2011

Поправьте меня, если я ошибаюсь, но я считаю, что UIPageViewController по умолчанию загружает в память только следующую и предыдущую страницы, поэтому вам не придется беспокоиться об управлении памятью.

0 голосов
/ 09 ноября 2011

Если вы используете книгу в формате PDF, вы можете только загрузить нужную страницу и перейти к контроллеру представления, когда эти два метода называются

– pageViewController:viewControllerBeforeViewController:
– pageViewController:viewControllerAfterViewController:
0 голосов
/ 24 октября 2011

Не уверен, что я понимаю ваш вопрос, но, похоже, вы не хотите, чтобы весь контент вашей книги загружался как объекты страницы. Вместо загрузки всего содержимого книги в вашем методе init загружается только отображаемая страница, а затем, когда пользователь «переворачивает» страницу, загружается следующая или предыдущая страница на основе отображаемой в данный момент страницы.

...