Помогите реализовать Horizontal UITableViewController?

У меня есть куча «слайдов», которые я пытаюсь показать на iPad по одному с помощью UIScrollView. «Слайды» — это различные подклассы класса UIViewController.

Я храню свои слайды в NSUserDefaults, представленном NSDictionaries. При запуске я загружаю NSArray NSDictionaries и перебираю их, передавая представления в UIScrollView.

Сейчас это неэффективно, потому что все слайды хранятся в памяти, даже когда они за кадром. Я подозреваю, что я должен заставить его вести себя немного больше как UITableViewController, с точки зрения повторного использования слайдов и выпуска слайдов, когда они находятся за пределами экрана, и воссоздания их, когда они появляются на экране.

У меня есть два вопроса.

  • Во-первых, как UITableViewController справляется с заменой ячеек? Где я могу найти пример кода или алгоритмы?

  • Во-вторых, как я могу повторно использовать слайды, если они не все одного типа?


person Moshe    schedule 08.12.2010    source источник


Ответы (1)


Я написал ответ о циклическом UIScrollview здесь:

Как реализовать циклический UIScrollView?

Если вы используете этот подход, вам действительно нужно загрузить только 3 представления в любое время.

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

A B C

Три вида - А и С не видно, В видно.

Если вы прокрутите вправо часть B, часть C будет видна. A можно повторно использовать и логически переместить, чтобы следовать за C, поэтому у вас есть

B C A

Продолжайте прокручивать вправо, измените B и сделайте его логически после A

C A B

Если вы прокрутите другим способом ту же идею, но сделайте это в обратном порядке.

person Adam Eberbach    schedule 08.12.2010
comment
Хороший ответ. На самом деле это заставило меня задуматься о том, как я реализую свои слайды сейчас, а не о том, как я должен быть... - person Moshe; 08.12.2010