iOS TableView实现上拉加载更多数据

1. 建立刷新控件, 并将控件设置到TableView的tableFooterView:git

- (void)setupUpRefresh
{
    FooterView *refreshFooterView = [FooterView refreshFooterView];
    refreshFooterView.hidden = YES;
    self.tableView.tableFooterView = refreshFooterView;
}

 

2. 将更多数据加载到原数据的后面:github

[self.datas addObject:kMoreData];

 

3. 刷新表格并隐藏FooterView:spa

// 刷新表格
[self.tableView reloadData];
        
// 结束刷新状态, 隐藏FooterView
self.tableView.tableFooterView.hidden = YES;

 

4. 经过代理方法, 设置刷新控件显示或隐藏:代理

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    // 获取当前contentView滑动的位置(对应contentSize)
    CGFloat contenOffsetY = scrollView.contentOffset.y;
    
    // 若是tableView尚未数据或footerView在显示时, 直接返回
    if (self.datas.count == 0 || self.tableView.tableFooterView.hidden == NO)
    {
        return;
    }
    
    // 最后一个Cell显示时contentOffSetY应该在的最小位置(内容高度 + 边框 - 显示窗口高度 - footrerView高度)
    CGFloat targetContentOffsetY = scrollView.contentSize.height + scrollView.contentInset.bottom - scrollView.height - self.tableView.tableFooterView.height;
    
    // 若滑动位置在目标位置下(显示到最后一个Cell)时
    if (contenOffsetY >= targetContentOffsetY)
    {
        // 显示footerView
        self.tableView.tableFooterView.hidden = NO;
        
        // 加载更多数据
        [self loadMoreDatas];
    }
}

 

Demo:https://github.com/BigPlane/UpRefreshDemocode

相关文章
相关标签/搜索