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

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

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

 

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

[self.datas addObject:kMoreData];

 

3. 刷新表格并隐藏FooterView:

// 刷新表格
[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/UpRefreshDemo

posted @ 2015-09-02 13:39  HappyPlane  阅读(1875)  评论(0编辑  收藏  举报