添加上拉下拉刷新数据的功能(MJRefresh)

2022-08-01  本文已影响0人  不要虚度美好的时光

头文件:

#import "MJExtension.h"
#import "MJRefreshNormalHeader.h"
#import "UIScrollView+MJRefresh.h"

// 自定义的header
#import "MJRefreshAutoNormalFooter.h"

static const CGFloat MJDuration = 0.5;

代码:

- (void)viewDidLoad {
    [super viewDidLoad];
  .......
[self addPullRefresh];
}

#pragma mark UITableView + 上拉刷新 默认 --- start
- (void)addPullRefresh
{
    [self addDropDownRefresh];
    
    __weak __typeof(self) weakSelf = self;
    
    // 设置回调(一旦进入刷新状态就会调用这个refreshingBlock)
    self.searchResults_TableView.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{
        [weakSelf loadMoreData];
    }];
    //    ((MJRefreshAutoFooter *)self.tableView.mj_footer).onlyRefreshPerDrag = YES;
}

#pragma mark UITableView + 下拉刷新 默认
- (void)addDropDownRefresh
{
    __weak __typeof(self) weakSelf = self;
    
    // 设置回调(一旦进入刷新状态就会调用这个refreshingBlock)
    self.searchResults_TableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
        [weakSelf loadNewData];
    }];
    
    // 马上进入刷新状态
    [self.searchResults_TableView.mj_header beginRefreshing];
}

#pragma mark 上拉加载更多数据
- (void)loadMoreData
{
    // 1.添加假数据
    //    for (int i = 0; i<1; i++) {
    //        [self.data addObject:MJRandomData];
    //    }
    
    // 2.模拟2秒后刷新表格UI(真实开发中,可以移除这段gcd代码)
    __weak UITableView *tableView = self.searchResults_TableView;
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(MJDuration * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        // 刷新表格
        [tableView reloadData];
        
        // 拿到当前的上拉刷新控件,结束刷新状态
        [tableView.mj_footer endRefreshing];
    });
}

#pragma mark 下拉刷新数据
- (void)loadNewData
{
    // 1.添加假数据
    //    for (int i = 0; i<5; i++) {
    //        [self.data insertObject:MJRandomData atIndex:0];
    //    }
    
    // 2.模拟2秒后刷新表格UI(真实开发中,可以移除这段gcd代码)
    __weak UITableView *tableView = self.searchResults_TableView;
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(MJDuration * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        // 刷新表格
        [tableView reloadData];
        
        // 拿到当前的下拉刷新控件,结束刷新状态
        [tableView.mj_header endRefreshing];
    });
}

#pragma mark UITableView + 上拉刷新 默认 --- end
上一篇下一篇

猜你喜欢

热点阅读