UITableView заполнитель для удаленных ячеек - PullRequest
0 голосов
/ 19 сентября 2011


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

Я использую UITableView с пользовательскими UITableViewCell для отображения некоторых новостей из RSS-канала. это отлично работает,

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

Итак, мой вопрос - могу ли я как-то поставить заполнитель, чтобы он хотя бы показывал «загрузку» при прокрутке или какой-либо другой вид индикации?

Заранее спасибо :)
Шай

Ответы [ 2 ]

1 голос
/ 19 сентября 2011

Когда вы заполняете свои ячейки содержимым, обычно вы делаете это в UITableViewDataSource

- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

. Он будет вызываться каждый раз, когда ячейка необходима перед ее отображением.Если вы установите форму данных, ячейка будет обновлена ​​до того, как она отобразится.

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

Затем в UITableViewDelegate

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath; 

Запустите асинхронную выборку данных и обновите ячейку при получении данных.

0 голосов
/ 19 сентября 2011

Чтобы избежать дублирования предыдущих данных в новой ячейке, используйте уникальный CellIdentifier.

    NSString *CellIdentifier = [NSString stringWithFormat:@"%i", indexPath.row];
    NewsCell *cell = (NewsCell *) [tableView dequeueReusableCellWithIdentifier: CellIdentifier];
    if (cell == nil) 
    {   
        cell = [[ActivitiesCell alloc] initWithStyle:UITableViewStylePlain reuseIdentifier:CellIdentifier];
    }

В файле NewsCell.m используйте следующий код и загрузите новую ячейку с помощью метода initWithStyle вместо использования loadNibNamed .

    - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 
    {
        self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
        if (self) 
        {
    // Initialization code. 
        }
        return self;
    }
...