iOS-MJRefresh

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

效果图(一)

效果图(二)

你可能感兴趣的:(iOS-MJRefresh)