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

相關文章
相關標籤/搜索