#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