Форум программистов, компьютерный форум CyberForum.ru

Objective-C

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.93
aply
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 40
#1

Дозагрузка данных в UITableView при скролле - Objective-C

06.05.2014, 11:50. Просмотров 1742. Ответов 3
Метки нет (Все метки)

С веб-сервиса загружаю порцию данных, отображаю их на UITableViewController.
Как после прокрутки до последней записи загрузить еще одну порцию данных и отобразить их в этой же таблице?

Не могу понять, какой метод используется при прокрутке таблицы и проверки её текущего состояния.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.05.2014, 11:50     Дозагрузка данных в UITableView при скролле
Посмотрите здесь:

Objective-C База данных пользователей, из каких данных составлять?
Как наполнять UITableView ячейками разной высоты? Objective-C
Objective-C Как при дозагрузке данных показать UIActivityIndicatorView внизу UITableView?
Как сделать асинхронную загрузку картинок в UITableView не останавливая главный поток? Objective-C
Исчезает разделитель при скролле UITableView Objective-C
UITableView Section Objective-C
Objective-C UITableView - footer не уходит за экран

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kievkao
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
06.05.2014, 14:08     Дозагрузка данных в UITableView при скролле #2
Я обычно делаю следующим образом (фрагмент для collectionView, но не суть важно):

Objective-C
1
2
3
4
5
6
7
8
9
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
...
     if (indexPath.row == ([self.items count] - 1))
     {
            // инициируем загрузку следующей порции
     }
...
}
aply
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 40
06.05.2014, 15:35  [ТС]     Дозагрузка данных в UITableView при скролле #3
Это аналог метода (UITableViewCell *)tableViewUITableView *)tableView cellForRowAtIndexPathNSIndexPath *)indexPath ?

Но ведь тогда новая порция будет сразу грузиться, а не тогда, когда пользователь достигнет конца таблицы.
Как я понимаю, все ячейки таблицы строятся сразу и потом только отображаются. Или что-то путаю?

Я нашел способ подобный:
Objective-C
1
2
3
4
5
6
7
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"indexPath = %d",indexPath.row);
    if (indexPath.row==self.items.count-1) {
        [self loadMoreItems];
    }
}
Добавлено через 10 минут
А нет, перепроверил, Вы правы, можно в tableView: cellForRowAtIndexPath:
Он вызывается только когда ячейка появляется на экране.

В принципе, без разницы, наверно, в котором их этих методов вызывать подгрузку новой порции, да?
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
07.05.2014, 07:26     Дозагрузка данных в UITableView при скролле #4
aply, willDisplayCell лучше, ибо cellForRowAtIndexPath все же создание.
Поведение вызова метода для создания ячеек - внутренности iOS. Не стоит расчитывать на:
Цитата Сообщение от aply Посмотреть сообщение
Он вызывается только когда ячейка появляется на экране.
Yandex
Объявления
07.05.2014, 07:26     Дозагрузка данных в UITableView при скролле
Ответ Создать тему
Опции темы

Текущее время: 04:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru