#import "ViewController.h"
//加入引用的头文件
#import "UIView+MJExtension.h"
#import "MJRefresh.h"
static const CGFloat MJDuration = 2.0;
@interface ViewController ()<UITableViewDelegate,UITableViewDataSource>
@property (nonatomic,strong)UITableView *tableView;
@end
@implementation ViewController
#pragma mark UITableView + 下拉刷新 动画图片
- (void)example02
{
// 添加动画图片的下拉刷新
// 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadNewData方法)
[self.tableView addGifHeaderWithRefreshingTarget:self refreshingAction:@selector(loadNewData)];
// 设置普通状态的动画图片
NSMutableArray *idleImages = [NSMutableArray array];
for (NSUInteger i = 1; i<=60; i++) {
UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"dropdown_anim__000%zd", i]];
[idleImages addObject:image];
}
[self.tableView.gifHeader setImages:idleImages forState:MJRefreshHeaderStateIdle];
// 设置即将刷新状态的动画图片(一松开就会刷新的状态)
NSMutableArray *refreshingImages = [NSMutableArray array];
for (NSUInteger i = 1; i<=3; i++) {
UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"dropdown_loading_0%zd", i]];
[refreshingImages addObject:image];
}
[self.tableView.gifHeader setImages:refreshingImages forState:MJRefreshHeaderStatePulling];
// 设置正在刷新状态的动画图片
[self.tableView.gifHeader setImages:refreshingImages forState:MJRefreshHeaderStateRefreshing];
// 在这个例子中,即将刷新 和 正在刷新 用的是一样的动画图片
// 马上进入刷新状态
[self.tableView.gifHeader beginRefreshing];
// 此时self.tableView.header == self.tableView.gifHeader
}
#pragma mark UITableView + 上拉刷新 动画图片
- (void)example12
{
// 添加动画图片的上拉刷新
// 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadMoreData方法)
[self.tableView addGifFooterWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
// 设置正在刷新状态的动画图片
NSMutableArray *refreshingImages = [NSMutableArray array];
for (NSUInteger i = 1; i<=3; i++) {
UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"dropdown_loading_0%zd", i]];
[refreshingImages addObject:image];
}
self.tableView.gifFooter.refreshingImages = refreshingImages;
// 此时self.tableView.footer == self.tableView.gifFooter
}
#pragma mark - 数据处理相关
#pragma mark 下拉刷新数据
- (void)loadNewData
{
// 1.模拟2秒后刷新表格UI(真实开发中,可以移除这段gcd代码)
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(MJDuration * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
// 刷新表格
[self.tableView reloadData];
// 拿到当前的下拉刷新控件,结束刷新状态
[self.tableView.header endRefreshing];
});
}
#pragma mark 上拉加载更多数据
- (void)loadMoreData
{
// 1.模拟2秒后刷新表格UI(真实开发中,可以移除这段gcd代码)
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(MJDuration * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
// 刷新表格
[self.tableView reloadData];
// 拿到当前的上拉刷新控件,结束刷新状态
[self.tableView.footer endRefreshing];
});
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
_tableView = [[UITableView alloc]initWithFrame:self.view.frame style:UITableViewStylePlain];
_tableView.delegate = self;
_tableView.dataSource = self;
[self.view addSubview:_tableView];
[self example02];
[self example12];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 14;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *ID = @"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];
}
cell.textLabel.text = @"你好!";;
return cell;
}
@end
//MJRefresh刷新控件的链接
https://github.com/CoderMJLee/MJRefresh.git
原文地址:http://blog.csdn.net/huanghaiyan_123/article/details/44493007