
简介:
在展示一些经常需要更新的列表时,例如商品列表、聊天列表时,我们需要通过某种 *** 作来@R_743_6419@,最常用的便是下拉刷新的方法了,下拉刷新作为iOS的标准控件,即使不实用第三方库也可以容易的实现,这篇文章将向大家讲解如何使用UIRefreshControl实现下拉刷新功能。
UIRefreshControl是iOS6自带的UItableVIEw下拉刷新控件。iOS6中,UItableVIEwController已经内置了UIRefreshControl控件。UIRefreshControl目前只能用于UItableVIEwController,如果用在其他VIEwController中,运行时会得到如下错误提示:(即UIRefreshControl只能被UItableVIEwController管理)
1. 首先看一下UIRefreshControl的头文件
NS_CLASS_AVAILABLE_IOS(6_0) @interface UIRefreshControl : UIControl- (instancetype)init;@property (nonatomic,Readonly,getter=isRefreshing) BOol refreshing;// 菊花颜色@property (nonatomic,retain) UIcolor *tintcolor;// 下拉刷新文字描述@property (nonatomic,retain) NSAttributedString *attributedTitle UI_APPEaraNCE_SELECTOR;// 开始刷新- (voID)beginRefreshing NS_AVAILABLE_IOS(6_0);// 结束刷新- (voID)endRefreshing NS_AVAILABLE_IOS(6_0);@end
使用方法
1.目前只对UItablevIEwController有用;
2.目前只能下拉刷新,不能上拉加载;
3.init或者vIEwDIDLoad中创建UIRefreshControl,设置文字,颜色等信息;
4.给UIRefreshControl添加方法,当值改变的时候调用,方法用于数据请求;
5.该方法中请求数据确认完成之后,调用endRefreshing方法,关闭刷新;
2.示例Demo
#import <UIKit/UIKit.h>@interface RefreshtableVIEwController : UIVIEwController <UItableVIEwDelegate,UItableVIEwDataSource>@property (nonatomic,retain) UItableVIEw * tableVIEw;@property (nonatomic,retain) UIRefreshControl * refreshControl;@property (nonatomic,retain) NSMutableArray * dataSource;@end
#import <UIKit/UIKit.h>@interface RefreshtableVIEwController : UIVIEwController <UItableVIEwDelegate,retain) NSMutableArray * dataSource;@end#import "RefreshtableVIEwController.h"@interface RefreshtableVIEwController ()@end @implementation RefreshtableVIEwController- (voID)vIEwDIDLoad { [super vIEwDIDLoad]; _dataSource = [NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4",nil nil]; // UItableVIEw _tableVIEw = [[UItableVIEw alloc] initWithFrame:self.vIEw.frame style:UItableVIEwStylePlain]; _tableVIEw.delegate = self; _tableVIEw.dataSource = self; [_tableVIEw registerClass:[UItableVIEwCell class] forCellReuseIDentifIEr:@"UItableVIEwCell"]; [self.vIEw addSubvIEw:_tableVIEw]; // UIRefreshControl _refreshControl = [[UIRefreshControl alloc] init]; _refreshControl.tintcolor = [UIcolor redcolor]; _refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"下拉刷新"]; [_refreshControl addTarget:self action:@selector(refreshControlAction) forControlEvents:UIControlEventValueChanged]; [_tableVIEw addSubvIEw:_refreshControl];} - (voID) refreshControlAction { if (self.refreshControl.refreshing) { _refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"加载中..."]; // 1. 远程请求数据 [self requestAPIData]; // 2. 结束刷新 [self.refreshControl endRefreshing]; // 3. 重新加载数据 [self.tableVIEw reloadData]; }} - (voID)requestAPIData { // 模拟远程请求所耗费的时间 [NSThread sleepForTimeInterval:2]; for (int i = 0; i < 5; i++) { int value = (arc4random() % 100) + 1; [self.dataSource addobject:[Nsstring stringWithFormat:@"%d",value]]; }} - (NSInteger) tableVIEw:(UItableVIEw *)tableVIEw numberOfRowsInSection:(NSInteger)section { return self.dataSource.count;} - (UItableVIEwCell *)tableVIEw:(UItableVIEw *)tableVIEw cellForRowAtIndexPath:(NSIndexPath *)indexPath { static Nsstring * ID = @"UItableVIEwCell"; UItableVIEwCell * cell = [tableVIEw dequeueReusableCellWithIDentifIEr:ID]; if (cell == nil) { cell = [[UItableVIEwCell alloc] initWithStyle:UItableVIEwCellStyleDefault reuseIDentifIEr:ID]; } cell.textLabel.text = self.dataSource[indexPath.row]; return cell;} - (voID)dIDReceiveMemoryWarning { [super dIDReceiveMemoryWarning];}@end 运行效果:
关于UIRefreshControl在使用的一些踩坑指南,大家可以参考这篇文章://www.jb51.net/article/139064.htm
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。
总结以上是内存溢出为你收集整理的iOS中UIRefreshControl的基本使用详解全部内容,希望文章能够帮你解决iOS中UIRefreshControl的基本使用详解所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)