UITableView加载更多单元格

时间:2015-03-01 17:24:23

标签: ios uitableview

当用户在表格视图中滚动到列表末尾时,我想添加更多单元格。 我找到了这个主题(Table View load more cell?),但是......可以使用" reloadData"?例如,我们在表视图中有100个单元格,为了添加新的20个单元格,我们将重新加载整个表格视图?

4 个答案:

答案 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知道插入了哪些行。

https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UITableView_Class/index.html#//apple_ref/occ/instm/UITableView/insertRowsAtIndexPaths:withRowAnimation

答案 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];
    }
}