2010-05-28 3 views
0

Есть ли способ сообщить UITableView предварительно загружать все строки?Как сообщить UITableView предварительно загружать все строки?

В таблицеView должно отображаться несколько комментариев (до 80 комментариев).

Поэтому мой комментарийCell использует Setter для адаптации ячейки к определенному комментарию.

-(void)setComment:(Comment *)newComment { 
if (newComment != comment) { 
    [comment release]; 
     comment = [newComment retain]; 
     /* 
     * set the cells view variables here 
     */ 
    } 
} 

Этот конкретный сеттер занимает довольно много ресурсов обработки, а прокрутка становится немного лаги.

Я использую комментарий конкретного reuseIdentifier вместо статического cellIdentifier при вызове

dequeueReusableCellWithIdentifier: 

для того, чтобы гарантировать, что «Новый_комментарий» равно старый «комментарий».
И на самом деле это отлично работает при прокрутке над уже загруженными ячейками.

Но при прокрутке комментариев в первый раз, он все еще отстает, как ад.

Это приводит меня к моему вопросу:
Есть ли способ рассказать о табло для предварительной загрузки всех ячеек? (что я сомневаюсь)
или
Должен ли я реализовать свой собственный кеш вместо того, чтобы полагаться на «dequeueReusableCellWithIdentifier:»?

ответ

2

Имейте в виду, что ваш специфический повторный идентификатор вашего комментария может быть тем, что заставляет все идти медленно (или, по крайней мере, это не помогает). Причина, по которой мы используем reuseIdentifier для UITableViewCells, состоит в том, что если вы пытаетесь распределить новую ячейку каждый раз, когда она вам нужна, она не так эффективна, как если бы вы могли просто повторно использовать ту, которая уже была сделана.

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

+0

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

1

Нет, вы должны предварительно загрузить свои данные в dataSource. Просто поместите все необходимое в массив и заполните ячейки таблицы из этого массива предварительно загруженных объектов.

Смежные вопросы