我们经常能在APP上看到下拉,上拉刷新的效果,下面介绍用第三方类库实现这个功能,其中加载用的数据是自己写的假数据.
用的第三方类库是MJRefresh
类库和demo都要在这里 http://download.csdn.net/detail/reikomiao/9164241
新建一个Controller继承于UITableViewController
准备工作
1.导入MJRefresh的第三方类库
2.导入系统的 CoreGraphics.framework UIKit.framework Foundation.framework框架
3.建立一个PCH文件,并且导入下面两个头文件,因为类库里没有引入下面两个头文件
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
4.在Build Settings ->Apple LLVM 6.1 - Preprocessing 把下面的置为NO,否则会报错,我也不知道为什么╮(╯_╰)╭
——————————–准备工作结束————————————-
下面开始写代码
在Controller中导入头文件
#import "MJRefresh.h"
在viewDidLoad调用刷新的方法
- (void)viewDidLoad {
[super viewDidLoad];
[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"];
[self setUpRefresh];
}
写一个假数据,用产生随机数的方法获得数据,利用懒加载的方法
// 数据的懒加载
- (NSMutableArray *)dataArray
{
_dataArray = [NSMutableArray array];
for (int i = 0; i < 14; i++) {
NSString *RandomData = [NSString stringWithFormat:@"第%d行---%d",i, arc4random_uniform(100)];
[_dataArray addObject:RandomData];
}
return _dataArray;
}
刷新属性的设置
- (void)setUpRefresh
{
// 1.下拉刷新,添加一个下拉刷新头部控件
[self.tableView addHeaderWithTarget:self action:@selector(headerRereshing)];
// 一进入程序就下拉刷新
[self.tableView headerBeginRefreshing];
//2.上拉刷新
[self.tableView addFooterWithTarget:self action:@selector(footerRereshing)];
// 设置文字
self.tableView.headerPullToRefreshText = @"下拉可以刷新";
self.tableView.headerReleaseToRefreshText = @"松开马上刷新";
self.tableView.headerRefreshingText = @"正在加载";
self.tableView.footerPullToRefreshText = @"下拉可以刷新";
self.tableView.footerReleaseToRefreshText = @"松开马上刷新";
self.tableView.footerRefreshingText = @"正在加载";
}
- (void)headerRereshing
{
// 2.0秒之后刷新表格
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self.tableView reloadData];
[self.tableView headerEndRefreshing];
});
}
- (void)footerRereshing
{
// 2.0秒后刷新表格UI
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
// 刷新表格
[self.tableView reloadData];
// (最好在刷新表格后调用)调用endRefreshing可以结束刷新状态
[self.tableView footerEndRefreshing];
});
}
tableView的代理方法
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// Return the number of sections.
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
return self.dataArray.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
cell.textLabel.text = self.dataArray[indexPath.row];
return cell;
}
效果图
下拉刷新
上拉刷新
想写一下conllectionView的刷新也想写一下conllectionView在Xcode7中新添加的编辑功能,正在酝酿(才不是懒呢)(:з」∠)