В настоящее время мы делаем нечто подобное в нашем приложении. Поскольку UITableView наследуется от UIScrollView, вы, вероятно, захотите воспользоваться некоторыми свойствами и методами UIScrollView. Вы почти наверняка захотите реализовать класс, соответствующий делегату UIScrollView. Затем, когда пользователь прокручивает до конца загруженные в данный момент записи в UITableView, вы можете запросить у веб-службы следующую страницу данных. Документация для UIScrollView здесь и документация для UIScrollViewDelegate здесь .
Вот пример реализации метода scrollViewDidScroll:
UIScrollViewDelegate, который должен дать вам поведение при загрузке записей, когда пользователь достигает нижней части представления прокрутки.
- (void) scrollViewDidScroll:(UIScrollView *) scrollView {
// Calculate whether the user has reached the bottom of the scroll view.
CGPoint offset = scrollView.contentOffset;
CGRect bounds = scrollView.bounds;
CGSize size = scrollView.contentSize;
UIEdgeInsets inset = scrollView.contentInset;
float y = offset.y + bounds.size.height - inset.bottom;
float h = size.height;
float reload_distance = 0;
if (y >= h + reload_distance) {
// Request next page of data here.
}
}
Прелесть методов UITableViewDataSource в том, что они не требуют, чтобы ваши данные хранились в памяти. Вы можете предоставить необходимые данные для каждой ячейки, запрашиваемой по требованию при вызове tableView:cellForRowAtIndexPath:
. Точно так же вы можете предоставить значение для возврата из tableView:numberOfRowsInSection:
, фактически не имея всех данных для строк в памяти. Скорее всего, вы захотите сохранить данные для ячеек вокруг просматриваемых в настоящее время ячеек в памяти, чтобы обеспечить разумную производительность. К сожалению, все это может быть довольно сложно, но это должно быть возможно. Вы можете найти больше документации о UITableDataSource здесь .