使用MJRefresh快速集成上拉刷新及下拉刷新

禹兴安
2023-12-01

一、先从GitHub下载最新的MjRefresh,或者直接用Pods,然后把库添加到项目中。

二、导入“MJRefresh.h”的文件

1.定义一个NSMutableNSArray数组 

@property (nonatomic,strong)NSMutableArray *array;

2.初始化这个数组

_array = [[NSMutableArrayalloc] initWithObjects:@"java",@"c/c++",@"python",@"java",@"c/c++",@"python",@"objective-c",@"javascript",nil];


三、创建一个刷新方法或者直接在viewDidLoad中写

- (void)setupTable{

//普通刷新-不带图片

//上拉刷新

      self.tableView.header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(LoadData)];



//回调block与上面一个方法是一个意思

//    self.tableView.header= [MJRefreshNormalHeader headerWithRefreshingBlock:^{

//        [self loadData];

//    }];


//下拉刷新

// 尾部刷新控件

    self.tableView.footer = [MJRefreshAutoNormalFooterfooterWithRefreshingTarget:selfrefreshingAction:@selector(loadMoreData)];

}

pragma mark - 请求数据方法

/**

 *  发送请求并获取数据方法

 */

//上拉刷新数据

- (void)loadData

{

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

        [_arrayaddObjectsFromArray:[[NSArrayalloc] initWithObjects:@"c#",@"php",@"t-sql",@"objective-c",@"javascript",nil]];

        

        // 刷新数据(若不刷新数据会显示不出)

        [self.tableViewreloadData];

        [self.tableView.headerendRefreshing];

    });

//尾部刷新获取数据

- (void)loadMoreData

{

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

        [_arrayaddObjectsFromArray:[[NSArrayalloc] initWithObjects:@"c#",@"php",@"1",@"2",@"3",nil]];

        // 刷新数据(若不刷新数据会显示不出)

        [self.tableViewreloadData];

        [self.tableView.footerendRefreshing];

    });

    

}

四、如果想刷新带图片效果,可以参考MJRefresh 下面这几个自定义类

// 自定义的header

#import "MJChiBaoZiHeader.h"

#import "MJChiBaoZiFooter.h"

#import "MJChiBaoZiFooter2.h"

#import "MJDIYHeader.h"

#import "MJDIYAutoFooter.h"

#import "MJDIYBackFooter.h"


同样,导入这些类名,然后把上面的刷新方法换成下面这样的方法

// 设置回调(一旦进入刷新状态,就调用targetaction,也就是调用selfloadNewData方法)

    self.tableView.header = [MJChiBaoZiHeaderheaderWithRefreshingTarget:selfrefreshingAction:@selector(loadData)];

五、使用方法,不一定用得到

// 马上进入刷新状态

//    [self.tableView.header beginRefreshing];

其他的方法可以参考MJRefresh 类库中得MJTableViewController、MJCollectionViewController、MJWebViewController

github:地址        https://github.com/daniel1214/OutshotTabbarDemo.git
 类似资料: