iOS:下拉刷新控件UIRefreshControl的详解
下拉刷新控件:UIRefreshControl
@interface UIRefreshControl : UIControl //继承控制类
- (instancetype)init;
@property (nonatomic, readonly, getter=isRefreshing) BOOL refreshing; //是否可以刷新
@property (nonatomic, retain) UIColor *tintColor; //控件颜色
@property (nonatomic, retain) NSAttributedString *attributedTitle; //控件属性标题
- (void)beginRefreshing;//开始刷新
- (void)endRefreshing ;//结束刷新
@end
2、用途:
它一般用来刷新下载数据并显示出来,例如上网时的刷新。当然,它可以搭配着表格视图tableView,进行下拉时,表格数据可以刷新加载下载的数据。另外,它也是表格视图控制器UITableViewController的特有属性。



#import "ViewController.h"
@interface ViewController ()
@property (strong,nonatomic)NSMutableArray *arrayM;
@end
//2.懒加载初始化数组
-(NSMutableArray*)arrayM
{
if(!_arrayM)
{
_arrayM = [NSMutableArray array];
}
return _arrayM;
}
//3.初始化刷新控件,并添加控件事件
- (void)viewDidLoad {
[super viewDidLoad];
//创建刷新控件
self.refreshControl = [[UIRefreshControl alloc]initWithFrame:CGRectMake(, , self.tableView.frame.size.width, )];
//将刷新控件添加到表格视图表头中
[self.tableView.tableHeaderView addSubview:self.refreshControl];
//添加刷新事件
[self.refreshControl addTarget:self action:@selector(loadData:) forControlEvents:UIControlEventValueChanged];
}
//4.封装一个准备加载数据的方法
-(void)prepareData
{
for (int i=; i<; i++)
{
NSString *product = [NSString stringWithFormat:@"产品-%d",arc4random_uniform()];
[self.arrayM addObject:product]; //整体刷新表格
[self.tableView reloadData];
}
}
//5、实现刷新控件的事件
#pragma mark -loadData
-(void)loadData:(UIRefreshControl*)sender
{
//加载数据
[self prepareData]; //结束刷新
[self.refreshControl endRefreshing];
}
//6、实现表格视图数据源协议的相关方法,显示数据再表格中
#pragma mark -<UITableViewDataSource>
//行数
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.arrayM.count;
}
//设置每一个单元格的内容
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//1.根据reuseIdentifier,先到对象池中去找重用的单元格对象
static NSString *reuseIdentifier = @"Cell";
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:reuseIdentifier];
//2.如果没有找到,自己创建单元格对象
if(cell == nil)
{
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseIdentifier];
}
//3.设置单元格对象的内容
cell.textLabel.text = [self.arrayM objectAtIndex:indexPath.row];
return cell;
}
演示结果如下:
没有任何操作时: 下拉刷新时:多了三条数据

#import "ViewController.h" @interface ViewController ()<UITableViewDataSource>
@property (strong,nonatomic)UITableView *tableView;
@property (strong,nonatomic)UIRefreshControl *refreshControl;
@property (strong,nonatomic)NSMutableArray *arrayM;
@end
//2.- (void)viewDidLoad方法完成如下代码:
※创建表格视图,并将其添加到view视图中
self.tableView = [[UITableView alloc]initWithFrame:self.view.bounds];
[self.view addSubview:self.tableView];
※创建刷新控件,并将其添加到表格视图中
self.refreshControl = [[UIRefreshControl alloc]initWithFrame:CGRectMake(, , self.tableView.frame.size.width, )];
self.refreshControl.tintColor = [UIColor redColor];
[self.tableView addSubview:self.refreshControl];
※初始化数组,并准备数据
self.arrayM = [NSMutableArray array];
for(int i=; i<; i++)
{
NSString *book = [NSString stringWithFormat:@"book-%d",i+];
[self.arrayM addObject:book];
}
※设置数据源并添加刷新控件事件
self.tableView.dataSource = self;
[self.refreshControl addTarget:self action:@selector(load:) forControlEvents:UIControlEventValueChanged];
//3、实现刷新事件加载数据
#pragma mark-load
-(void)load:(UIRefreshControl*)sender
{
//开始刷新加载数据
NSString *room = [NSString stringWithFormat:@"room-%d",arc4random_uniform()];
[self.arrayM addObject:room];
[self.tableView reloadData]; //结束刷新
[self.refreshControl endRefreshing];
}
//4、实现数据源协议的需要的方法,显示数据再表格
#pragma mark -<UITableViewDataSource>
//行
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.arrayM.count;
}
//设置每一个单元格的内容
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//1.根据reuseIdentifier,先到对象池中去找重用的单元格对象
static NSString *reuseIdentifier = @"Cell";
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:reuseIdentifier];
//2.如果没有找到,自己创建单元格对象
if(cell == nil)
{
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseIdentifier];
}
//3.设置单元格对象的内容
cell.textLabel.text = [self.arrayM objectAtIndex:indexPath.row];
return cell;
}
演示结果如下:
没有任何操作时: 下拉刷新时:

刷新结束后:多了一条room-1数据

iOS:下拉刷新控件UIRefreshControl的详解的更多相关文章
- IOS6.0自带下拉刷新控件UIRefreshControl
1.UIRefreshControl必需要在IOS6.0以后才干使用,同一时候他仅仅能在UITableViewController类中才干够使用 2.使用比較简单 self.refreshContro ...
- 新浪微博客户端(18)-集成下拉刷新控件UIRefreshControl
HomeViewController.m - (void)setupPullToRefreshView { UIRefreshControl *refreshControl = [[UIRefresh ...
- android官方下拉刷新控件SwipeRefreshLayout的使用
可能开发安卓的人大多数都用过很多下拉刷新的开源组件,但是今天用了官方v4支持包的SwipeRefreshLayout觉得效果也蛮不错的,特拿出来分享. 简介:SwipeRefreshLayout组件只 ...
- 上拉加载下拉刷新控件WaterRefreshLoadMoreView
上拉加载下拉刷新控件WaterRefreshLoadMoreView 效果: 源码: // // SRSlimeView // @author SR // Modified by JunHan on ...
- Android仿苹果版QQ下拉刷新实现(一) ——打造简单平滑的通用下拉刷新控件
前言: 忙完了结婚乐APP的开发,终于可以花一定的时间放在博客上了.好了,废话不多说,今天我们要带来的效果是苹果版本的QQ下拉刷新.首先看一下目标效果以及demo效果: 因为此效果实现的步骤 ...
- [Swift通天遁地]二、表格表单-(4)使用系统自带的下拉刷新控件,制作表格的下拉刷新效果
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- [Android]下拉刷新控件RefreshableView的实现
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4172483.html 需求:自定义一个ViewGroup,实现 ...
- android SwipeRefreshLayout google官方下拉刷新控件
下拉刷新功能之前一直使用的是XlistView很方便我前面的博客有介绍 SwipeRefreshLayout是google官方推出的下拉刷新控件使用方法也比较简单 今天就来使用下SwipeRefres ...
- Android PullToRefresh下拉刷新控件的简单使用
PullToRefresh这个开源库早就听说了,不过一直没用过.作为一个经典的的开源库,我觉得还是有必要认识一下. 打开github上的网址:https://github.com/chrisbanes ...
随机推荐
- react + redux 实现幻灯片
写在前面: 这一篇是我 使用scss + react + webpack + es6实现幻灯片 的进阶篇,效果请点我,将会使用上redux的基础用法,因为一开始没有理解好redux的用法,单纯看文档, ...
- Linux内存管理中的slab分配器
转载自:http://edsionte.com/techblog/archives/4019 Linux内核中基于伙伴算法实现的分区页框分配器适合大块内存的请求,它所分配的内存区是以页框为基本单位的. ...
- 爱奇艺全国高校算法大赛初赛C
区间$dp$. 倒着考虑这件事件,肯定有最后一个取走的数字,假设是$a[k]$,那么最后一次取走的价值肯定是$a[0]*a[k]*a[n+1]$,之前取走的价值和为$[1,k-1]$的价值加上$[k+ ...
- springMVC
SpringMVC架构流程: 1.用户发送请求至前端控制器DispatcherServlet2.DispatcherServlet收到请求调用HandlerMapping处理器映射器.3.处理器映射器 ...
- Chris and Magic Square CodeForces - 711B
ZS the Coder and Chris the Baboon arrived at the entrance of Udayland. There is a n × n magic grid o ...
- onvif 开发中的一些重要函数介绍
➤soap结构中count(soap->count)成员 soap结构中count(soap->count)成员记录的是http协议中Content-Length的数值. ➤keep_al ...
- Vue 2.0学习(三)指令与事件
指令(Directives)是Vue.js模板中最常用的一项功能,它带有前缀v-,前面已经使用过v-html.v-pre等.指令的主要职责就是当表达式的值改变时,相应地将某些行为应用到DOM上. v- ...
- mac系统终端下忽略大小写 与 git自动补全(git auto completion)
1.下载git-completion.bash 并放到home 目录下: curl https://raw.githubusercontent.com/git/git/master/contrib/c ...
- FastReport.Net使用:[31]使用带参查询及存储
带参查询 1.在数据列表中创建一个名为姓名的参数. 然后使用一个对话框,将文本框的ReportParameter(报表参数)选为参数中的姓名. 给童鞋们的一个题目:这里可以改为下拉框,学生列表从数据库 ...
- 山东省第四届省赛 E-Mountain Subsequences
Description Coco is a beautiful ACMer girl living in a very beautiful mountain. There are many trees ...