MJRefresh

MJRefresh使用简介

主要功能:下拉刷新、上拉加载更多,文末有github及demo地址。

=============使用方法1===============

#import "UIScrollView+MJRefresh.h"//下拉刷新

1.添加下拉刷新

[self.endTableView addHeaderWithCallback:^
    {
        //此处获取刷新数据
        [self requestEnd:@"1" hudStr:nil];
    }];

在刷新成功后(获取数据成功、失败、超时等),停止下拉刷新

[self.endTableView headerEndRefreshing];

2.上拉加载更多

[self.endTableView addFooterWithCallback:^
    {
        //此处获取更多数据
        [self requestEnd:@"1" hudStr:nil];
    }];

成功后(获取数据成功、失败、超时等),停止上拉加载更多

[self.endTableView footerEndRefreshing];

注:在需要刷新的页面消失时最好加上停止刷新的方法

- (void)viewWillDisappear:(BOOL)animated
{
    [self.endTableView headerEndRefreshing];
    [self.endTableView footerEndRefreshing];
}

================使用方法2================
1.导入第三方(省略)
2.引入头文件

#import "MJRefresh.h"

3.添加下拉刷新(多数情况是在tableview中的viewDidLoad方法中添加)

//添加一个下拉刷新头部组件
    self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
        //如果数据是通过网络请求获得,在此处再次获取数据

        //先将之前的数据移除掉
        [self.messages removeAllObjects];

        dispatch_async(dispatch_get_global_queue(0, 0), ^{
            [self.messageManager getMessageWithCount:10 Page:1 completionHandle:^(NSString *success, NSArray *message) {
                if ([success isEqualToString:@"0"]) {
                    self.messages = [NSMutableArray arrayWithArray:message];
                    [self.tableView reloadData];
                }else{
                    NSLog(@"失败");
                }
            }];
            //通知主线程更新UI界面
            dispatch_async(dispatch_get_main_queue(), ^{
                [self.tableView reloadData];
            });
        });
        //结束刷新
        [self.tableView.mj_header endRefreshing];
    }];

4.添加上拉加载更多

//添加上拉加载更多
    self.tableView.mj_footer = [MJRefreshAutoFooter footerWithRefreshingTarget:self refreshingAction:@selector(tapFooter)];

5.tapFooter方法实现

#pragma mark 上拉加载方法
- (void)tapFooter{
    static int flag = 1;
    flag ++;//每次上拉都加载新的数据
    dispatch_async(dispatch_get_global_queue(0, 0), ^{
    //请求更多数据
        [self.messageManager getMessageWithCount:10 Page:flag completionHandle:^(NSString *success, NSArray *message) {
            if ([success isEqualToString:@"0"]) {
                for (int i = 0; i < 10; i ++) {
                    [self.messages addObject:message[i]];
                }
            }else{
                NSLog(@"失败");
            }
        }];
        //通知主线程更新UI界面
        dispatch_async(dispatch_get_main_queue(), ^{
            [self.tableView reloadData];
        });
    });
    //结束刷新
    [self.tableView.mj_footer endRefreshing];
}

GitHub第三方下载地址
https://github.com/CoderMJLee/MJRefresh

Coding的demo的下载地址
https://coding.net/u/Panzz/p/MJRefreshDemo/git

你可能感兴趣的:(MJRefresh)