当用户在表格视图中滚动到列表末尾时,我想添加更多单元格。 我找到了这个主题(Table View load more cell?),但是......可以使用" reloadData"?例如,我们在表视图中有100个单元格,为了添加新的20个单元格,我们将重新加载整个表格视图?
答案 0 :(得分:4)
Esay使用:
1)使用UIScrollView's scrollViewDidEndDecelerating
查看是否到达最后一个单元格
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
float offset = (scrollView.contentOffset.y - (scrollView.contentSize.height - scrollView.frame.size.height));
if (offset >= 0 && offset <= 5) {
// This is the last cell so get more data
[self loadmore];
}
}
2)现在加载更多方法在数组或字典中添加对象,并在UITableView中添加对象:
-(void)loadmore
{
//add datasource object here for tableview
[mutArrTblViewDataSourceHere addObject:anyDataObject];
//now insert cell in tableview
[yourtblViewObjectHere beginUpdates];
[yourtblViewObjectHere insertRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:[mutArrTblViewDataSourceHere count]-1 inSection:0]]withRowAnimation:UITableViewRowAnimationAutomatic];
[yourtblViewObjectHere endUpdates];
}
答案 1 :(得分:2)
您不需要重新加载整个UITableView。您可以使用insertrowsatindexpath
请参阅此答案以供参考。 https://stackoverflow.com/a/6097835/1891327
答案 2 :(得分:1)
您可以使用UITableView的insertRowsAtIndexPaths:withRowAnimation:
方法让UITableView知道插入了哪些行。
答案 3 :(得分:1)
在尝试了Paresh的实现之后 - 我通过UIScrollView的scrollViewDidScroll找到了一个更清晰的解决方案来满足我自己的需求。变量&#34; lazyLoad&#34;是一个BOOL标志,指示是否正在发生现有网络请求。
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
float offset = (scrollView.contentOffset.y - (scrollView.contentSize.height - scrollView.frame.size.height));
if (offset >= 0 && offset <= 25 && !self.lazyLoad)
{
self.page++;
[self loadReports];
}
}