添加上拉下拉刷新数据的功能(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