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

  • 相关阅读:
    借用构造函数实现继承
    原型链
    创建对象 之 组合使用构造函数模式和原型模式
    6.原型对象的问题
    Spring MVC
    AOP
    谈谈对Spring IOC的理解
    Mybatis3.x与Spring4.x整合(转)
    手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版)
    Appweb写法
  • 原文地址:https://www.cnblogs.com/happyplane/p/4724419.html
Copyright © 2011-2022 走看看