zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    数据库设计——多表之间的关系
    约束
    DQL
    DML
    DDL
    Mysql——基础
    IT大牛关注链接
    deepin20安装Python3.85
    Python中的模块
    python中的装饰器
  • 原文地址:https://www.cnblogs.com/happyplane/p/4724419.html
Copyright © 2011-2022 走看看