MJRefresh我们在项目中常用的一款开发辅助工具,里面包括有下拉刷新,上拉加载更多数据,一般在tableView,UICollectionView,UIWebView上面使用,关于下拉刷新和上拉加载的样式也是有很多,详情请见https://github.com/CoderMJLee/MJRefresh
以下是我本人在tableView上使用MJRefresh的简单demo。首先需要我们在github上下载MJRefresh(或者用CocosPods添加下载),再添加到你的工程当中。
1.下拉刷新
self.tableView.header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
// 进入刷新状态后会自动调用这个block
}];
2.上拉加载更多
self.tableView.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingBlock:^{
// 进入刷新状态后会自动调用这个block
}];
使用案例
#import "ARefreshTableViewController.h"
#import "MJRefresh.h"
#import "AFHTTPSessionManager.h"
@interface ARefreshTableViewController ()
{
NSMutableArray *arrData;
NSInteger page;
}
@end
@implementation ARefreshTableViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"样式一";
arrData = [[NSMutableArray alloc] init];
page = 1;
//下拉刷新
self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
page = 1;
[arrData removeAllObjects];
[self setRequestData];
}];
//上拉加载更多
self.tableView.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingBlock:^{
page++;
[self setRequestData];
}];
[self setRequestData];
}
- (void)setRequestData
{
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
NSString *strURL = [NSString stringWithFormat:@"http://7xk1w3.com1.z0.glb.clouddn.com/yuancanmessage=%ld.html",(long)page];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
[manager POST:strURL
parameters:nil
progress:nil
success:^(NSURLSessionTask *task, id responseObject){
NSLog(@"jion:%@",responseObject);
NSArray *arrTemp = [[responseObject objectForKey:@"data"] objectForKey:@"messageList"];
NSString *totalPage =[[responseObject objectForKey:@"data"] objectForKey:@"totalPage"];
if (page <= [totalPage integerValue]) {
for (NSDictionary *dic in arrTemp) {
[arrData addObject:dic];
}
[self.tableView reloadData];
[self.tableView.mj_header endRefreshing];
[self.tableView.mj_footer endRefreshing];
}
if (page >= [totalPage integerValue])
{
[self.tableView.mj_footer endRefreshingWithNoMoreData];
}
}
failure:^(NSURLSessionTask *operation, NSError *error){
NSLog(@"Error: %@", error);
}];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return arrData.count;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 40.0;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"CELL";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
cell.textLabel.textColor = [UIColor greenColor];
if (arrData.count > 0) {
cell.textLabel.text = [arrData[indexPath.row] objectForKey:@"title"];
}
return cell;
}
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 10.0;
}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return 10;
}
@end
效果图(一)
效果图(二)