美文网首页
添加上拉下拉刷新数据的功能(MJRefresh)

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

作者: 不要虚度美好的时光 | 来源:发表于2022-08-01 17:20 被阅读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
    

    相关文章

      网友评论

          本文标题:添加上拉下拉刷新数据的功能(MJRefresh)

          本文链接:https://www.haomeiwen.com/subject/fvmrwrtx.html