• 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;
        }
    }
  • 相关阅读:
    学习网页栅格系统的几篇好文
    [转载]iis6配置使用页面Gzip压缩提速
    img标签的src=""会引起的Page_Load多次执行
    基于sliverlight + wcf的web 文字版IM 示例
    Enterprise Library 4.1学习笔记8缓存应用程序块之FileDependency
    windows 2008上启用防火墙后sqlserver 2005经常出现连接超时的解决办法
    负载均衡环境下的web服务器处理
    Ado.Net连接池的速度测试
    [转载]网页栅格系统研究(1):960的秘密
    css基础:把所有背景图都集成在一张图片上,减少图片服务器请求次数
  • 原文地址:https://www.cnblogs.com/ErosLii/p/4517954.html
Copyright © 2020-2023  润新知