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

  • 相关阅读:
    个人作业Week2-代码复审
    个人项目-数独
    个人作业-Week1
    第零次个人作业
    mysql统计某个指标之和大于指定值的记录
    Redis命令行查询缓存值
    Grep命令
    Log4j配置文件中指定日志路径
    Cadence OrCAD17.2禁止和启用start page的设置方法
    Linux内核实现透视---kthread_work
  • 原文地址:https://www.cnblogs.com/happyplane/p/4724419.html
Copyright © 2011-2022 走看看