zoukankan      html  css  js  c++  java
  • iOS学习之下拉刷新

    今天我们来给昨天的Demo加上下拉刷新和上拉加载更多的功能.

    1.下拉刷新.

    在viewDidLoad中调用方法addRefreshControl,下拉时可以出现风火轮加载更多的效果.

    - (void)addRefreshControl {
        self.refreshControl = [[[UIRefreshControl alloc] initWithFrame:CGRectZero] autorelease]; //frame不用给,系统默认有.
        self.refreshControl.attributedTitle = [[[NSAttributedString alloc] initWithString:@"下拉刷新数据"] autorelease];
        //添加响应事件
        [self.refreshControl addTarget:self action:@selector(handleReload:) forControlEvents:UIControlEventValueChanged];
        
    }

    响应事件的要根据实际情况,这里写成一个方法,当下拉时,重新向服务器请求(第一页)数据.

    - (void)handleReload:(UIRefreshControl *)refresh {
        //请求最新数据,第一页数据.
        [self loadDataWithIndex:0];
    }

    这里的loadWithIndex方法也是为了能够总是请求第一页数据,也就是index为0("http://c.m.163.com/nc/article/list/T1348648517839/%ld-50.html",index);

    //将请求的服务器地址单独写成一个方法,便于在下拉刷新和上拉加载时候调用.
    //第一页:0 - 20; 第二页:20 - 20; 第三页:30 - 20....
    - (void)loadDataWithIndex:(NSInteger)index {
        _index = index;
        //设置请求网址
        self.engine.linkName = [NSString stringWithFormat:kNewsAPI, index];//0 - 20条数据
        //开始网络请求
        [self.engine startDownloadData];
    }

    下拉刷新完毕.

    下面是上拉加载更多.

    那么什么时候应该加载呢?---当"上拉加载"这个Cell出现时候,说明视图已经滚动到了最后面.这时候我们可以调用UITableViewDelegate协议中的一个方法来让数据加载;

    - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
        //如果要展示的Cell是最后一行,请求下一页数据
        if (indexPath.row == self.dataSource.count) {
            LoadingCell *cell1 = (LoadingCell *)cell; //将Cell转换一下类型,如果不做这一步,tableView并不知道这最后一个Cell是哪一套Cell
            [cell1.indicatorView startAnimating];
            //加载更多数据,下一页数据
            [self loadDataWithIndex:self.dataSource.count];//第一页0-20,self.data.count=20,第二页20-20,count=40,第三页40-20,count=60;
        }
    }
  • 相关阅读:
    Java集合之ArrayList
    深入理解Java中的String
    Spring系列之AOP实现的两种方式
    设计模式之代理模式
    使用 Composer 为 ThinkPHP(3.2.3)框架添加和管理组件
    滚动页面, 顶部导航栏固定效果
    nginx同一iP多域名配置方法
    nginx 服务器重启命令,关闭
    CentOS Linux服务器安全设置
    CentOS7安装iptables防火墙
  • 原文地址:https://www.cnblogs.com/ErosLii/p/4517954.html
Copyright © 2011-2022 走看看