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

У меня есть UITableView, который я заполняю из запроса JSON.

Я заполняю его личными сообщениями, и он работает.

Запрос JSON имеет свойства "site", в котором яполучить за каждый сайт 20 вечера.Итак, в начале я получил Site = 0 и получил 20PMS, которые загружены.

Теперь я хочу иметь такие функции, как в приложении для электронной почты (я думаю, что я видел его там): когда вы прокручиваете страницу вниз и достигаетеконец (в моем приложении достигло 20:00), приложение должно загрузить следующие 20 и т. д. и т. д.

Есть идеи, как реализовать?

Ответы [ 2 ]

0 голосов
/ 13 августа 2011

Ответ Sideswipe - хорошее начало, но вы не хотите останавливать пользовательский интерфейс, пока получаете следующие двадцать предметов. В последнем случае вы должны вернуть ячейку с надписью «Загрузка ...» и UIActivityIndicator при запуске потока для фактического получения данных. Когда этот поток завершается, он сигнализирует основному потоку, который затем может перезагрузить данные. Кроме того, будьте осторожны, не изменяйте размер массива (в фоновом потоке) до тех пор, пока вы фактически не добавите данные, так как вы можете столкнуться с проблемой прокрутки пользователем за последней строкой, если [значение массива] слишком велико.

См. Образец яблока: LazyTableImages

Для индикатора UIActivity:

UIActivityIndicatorView * loading  = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(200, 20, 30, 30)];
[date setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleGray];
[self.view addsubview:loading];
[loading startAnimating];
0 голосов
/ 13 августа 2011

Попробуйте

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return ([array count] + 1);
}

In

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

Do

if([indexpath row] == [array count]) {
    [self loadPMForSite:([array count]/20-1)];
}

In

- (void)loadPMForSite:(int)siteNumber

загрузите новый pms и затем перезагрузитеданные таблицы.

Не проверено, но должно работать.Может включать опечатки.

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