Как ускорить прокрутку строк таблицы? - PullRequest
1 голос
/ 23 января 2011

У меня есть строка таблицы с элементами:

alt text

1 - просмотр изображения (календарь)
4 - uilabel (месяц, день, заголовок, описание)

на cellForRowAtIndexPath я заполняю метки таким образом (изображение то же самое и вставляется создателем интерфейса):

@try {
    newsRow = ((NewsRowController *)[tableView dequeueReusableCellWithIdentifier:@"cell"]);
    if (newsRow == nil) {
        if (IS_IPAD)
            [[NSBundle mainBundle] loadNibNamed:@"NewsRow_ipad" owner:self options:nil];
        else [[NSBundle mainBundle] loadNibNamed:@"NewsRow" owner:self options:nil];

        if ([tableArray count] > 0) {
            [newsRow setCellDataWithName:[tableArray objectAtIndex:indexPath.row]  
                                 andDate:[descArray objectAtIndex:indexPath.row] 
                                     day:[dayArray objectAtIndex:indexPath.row]
                                   month:[monthArray objectAtIndex:indexPath.row]];
        }
    }       
}
@catch (NSException * e) {
    NSLog(@"fail.");
}
return newsRow;

Сейчас, tableArray, descArray,dayArray, monthArray - NSMutableArray, заполненный viewDidLoad.

Почему на устройстве iPhone (мой тест с 3G) слишком медленно прокручивать вверх / вниз?
Что мне нужно удалить, чтобы ускорить работу таблицы?
Это весь мой код, ноя не могу найти лучшего решения ...

РЕДАКТИРОВАТЬ:
alt text
Я не могу установить идентификатор ... я нене вижу этого ...
и мой Контроллер новостных рядов:

@interface NewsRowController : UITableViewCell

Любая идея из мира ифонистов ???:)

спасибо,
A

1 Ответ

5 голосов
/ 23 января 2011

Правильно ли повторно использован идентификатор вашей табличной ячейки в nib-файле?(вы можете найти его в инспекторе атрибутов)

Я сомневаюсь в этом, потому что если это будет "ячейка", вы спросите, почему ваши ячейки не обновляются.


Редактировать: еще раз проверьте в конструкторе интерфейса, является ли идентификатор точно таким же, как в вашем коде.Interface Builder Table View Cell Identifier

и затем измените свой код следующим образом:

if (newsRow == nil) {
    if (IS_IPAD)
        [[NSBundle mainBundle] loadNibNamed:@"NewsRow_ipad" owner:self options:nil];
    else 
        [[NSBundle mainBundle] loadNibNamed:@"NewsRow" owner:self options:nil];
}
else {
    NSLog(@"Dequeue success");
}
// no matter if there was a successful dequeue or not, you have a valid cell at this point
if ([tableArray count] > 0) {
    [newsRow setCellDataWithName:[tableArray objectAtIndex:indexPath.row]  
                         andDate:[descArray objectAtIndex:indexPath.row] 
                             day:[dayArray objectAtIndex:indexPath.row]
                           month:[monthArray objectAtIndex:indexPath.row]];
}

посмотрите, можете ли вы увидеть сообщение об успешном завершении очереди


EDIT2

Вы уверены, что добавили ячейку табличного представления, а не UIView в свое перо?
Я никогда не пробовал, но для меня вполне возможно, что вы можете иметь UIView в перо, которое "продвигается" к TableViewCellкоторый добавляется в просмотр таблицы.

Моя лучшая попытка проверить это - иконка ячейки. Она должна выглядеть так: cell icon

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...