iOS-MJRefresh

8270 ワード

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

効果図(一)効果図(二)