今天我们来给昨天的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:];
}

这里的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;
}
}

iOS学习之下拉刷新的更多相关文章

  1. iOS学习之下拉刷新、上拉加载

    http://blog.csdn.net/mx_xuanxiao/article/details/50595370

  2. 【FastDev4Android框架开发】RecyclerView完全解析之下拉刷新与上拉加载SwipeRefreshLayout(三十一)

    转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/49992269 本文出自:[江清清的博客] (一).前言: [好消息] ...

  3. IOS 开发下拉刷新和上拉加载更多

    IOS 开发下拉刷新和上拉加载更多 简介 1.常用的下拉刷新的实现方式 (1)UIRefreshControl (2)EGOTTableViewrefresh (3)AH3DPullRefresh ( ...

  4. 微信小程序之下拉刷新,上拉更多列表实现

    代码地址如下:http://www.demodashi.com/demo/11110.html 一.准备工作 首先需要下载小程序开发工具 官方下载地址: https://mp.weixin.qq.co ...

  5. android 5.0新特性学习总结之下拉刷新(一)

    android 5.0 后google最终在 support v4 包下 添加了下拉刷新的控件 项目地址: https://github.com/stormzhang/SwipeRefreshLayo ...

  6. IOS tableview下拉刷新上拉加载分页

    http://code4app.com/ios/快速集成下拉上拉刷新/52326ce26803fabc46000000 刷新没用用插件,加载使用的MJ老师的插件. - (void)viewDidLoa ...

  7. IOS UITableView下拉刷新和上拉加载功能的实现

    在IOS开发中UITableView是非常常用的一个功能,而在使用UITableView的时候我们经常要用到下拉刷新和上拉加载的功能,今天花时间实现了简单的UITableView的下拉刷新和上拉加载功 ...

  8. HBuilder/Mui开发ios使用上拉刷新导致滚动条无法使用的解决方法

    HBuilder/Mui开发的APP使用上拉刷新,当滚动到底部是会触发上拉刷新,加载更多数据.但是ios上确是一个坑,导致滚动条无法滚动. 解决方法 放弃Mui的上拉刷新,自己使用JS实现. var ...

  9. Android之下拉刷新的ListView

    不废话,代码里面注释很详细,直接上代码: 自定义的RefreshableListView代码: public class RefreshableListView extends ListView im ...

随机推荐

  1. 开源一套DirectUI界面库

    http://www.cppblog.com/weiym/archive/2012/07/03/181307.html

  2. 对类HelloWorld程序中添加一个MessageBox弹窗

    对类HelloWorld程序中添加一个MessageBox弹窗 分析: 任一程序运行的时候都会加载kernel32.dll的,但MessageBoxA()这个API却是在user32.dll中的.所以 ...

  3. 3个QT新闻网,2个发烧友网站

    http://planet.qt.io/ http://blog.basyskom.com/2015/introducing-qtopcua/ http://www.qtworldsummit.com ...

  4. maven下载及配置

    Maven是一个采用纯Java编写的开 源项目管理工具.Maven采用了一种被称之为project object model (POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xm ...

  5. SqlMapConfig.xml全局配置文件解析

    一:SqlMapConfig.xml配置文件的内容和配置顺序如下 properties(属性) settings(全局配置参数) typeAiases(类型别名) typeHandlers(类型处理器 ...

  6. ZOJ 2760 How Many Shortest Path

    题目大意:给定一个带权有向图G=(V, E)和源点s.汇点t,问s-t边不相交最短路最多有几条.(1 <= N <= 100) 题解:从源点汇点各跑一次Dij,然后对于每一条边(u,v)如 ...

  7. Linux系统编程(29)——线程间同步(续篇)

    线程间的同步还有这样一种情况:线程A需要等某个条件成立才能继续往下执行,现在这个条件不成立,线程A就阻塞等待,而线程B在执行过程中使这个条件成立了,就唤醒线程A继续执行.在pthread库中通过条件变 ...

  8. win7下自写驱动导致开机蓝屏调试过程

    之前没有接触过驱动调试.这里上手就要解决一个因为某个自定义驱动导致的系统登陆后蓝屏问题,记录下来.   问题: 从客户那边弄来的一个虚拟机,已知是加了我们的驱动之后才会导致蓝屏. 解决过程:   使用 ...

  9. jQuery扩展与noConflict的用法-小示例

    有时我们要用到自己定义的jquery,这时可以通过jQuery扩展来实现该功能 index.html <!DOCTYPE html> <html> <head> & ...

  10. BeanFactory调用getbean()对象

    Spring通过资源加载器加载相应的XML文件,使用读取器读取资源加载器中的文件到读取器中,在读取过程中,解析相应的xml文件元素,转化为spring定义的数据结BeanDefinition,把相应的 ...