一直觉得自己写的不是技术,而是情怀,一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的,希望我的这条路能让你们少走弯路,希望我能帮你们抹去知识的蒙尘,希望我能帮你们理清知识的脉络,希望未来技术之巅上有你们也有我。
文章目录
- 前言
- 正题
- OC-MJRefresh(下拉刷新)
- OC-MJRefresh(上拉底部无温馨提示)
- OC-MJRefresh(上拉底部有温馨提示)
- Swift-MJRefresh(下拉刷新)
- Swift-MJRefresh(上拉底部无温馨提示)
- Swift-MJRefresh(上拉底部有温馨提示)`含实战`
- 实现代码
- 效果
- 需求
- 1.tableview加载数据的时候顶部出现上拉加载更多的提示语
前言
今天有空写一下MJRefresh的使用,这个东西其实不难,有空自己研究一下,网上也很多资料参考
正题
OC-MJRefresh(下拉刷新)
OC-MJRefresh(下拉刷新)下载链接
@property (nonatomic,assign) NSInteger page; - (NSInteger)page{ if (_page == 0) { _page = 1; } return _page; } MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{ dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [self loadData]; [self.tableview.mj_header endRefreshing]; [self.tableview reloadData]; }); }]; [header setTitle:@"加载数据完成" forState:MJRefreshStateNoMoreData]; [header setTitle:@"正在加载数据" forState:MJRefreshStateRefreshing]; [header setTitle:@"刷新完毕" forState:MJRefreshStatePulling]; header.lastUpdatedTimeLabel.hidden = YES; self.tableview.mj_header = header;OC-MJRefresh(上拉底部无温馨提示)
OC-MJRefresh(上拉底部无温馨提示)下载链接
@property (nonatomic,assign) NSInteger page; - (NSInteger)page{ if (_page == 0) { _page = 1; } return _page; } self.tableview.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)]; #pragma mark 上拉加载更多 -(void)loadMoreData{ if (self.arr.count >= 150) { [self.tableview.mj_footer endRefreshing]; self.tableview.mj_footer.hidden = YES; return; } self.page += 1; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [self loadData]; [self.tableview.mj_footer endRefreshing]; [self.tableview reloadData]; }); }OC-MJRefresh(上拉底部有温馨提示)
OC-MJRefresh(上拉底部有温馨提示)下载链接
@property (nonatomic,assign) NSInteger page; @property (nonatomic,strong) MJRefreshAutoNormalFooter *footer; self.footer = [MJRefreshAutoNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)]; [self.footer setTitle:@"准备加载数据中..." forState:MJRefreshStateIdle]; [self.footer setTitle:@"努力加载数据中..." forState:MJRefreshStateRefreshing]; self.tableview.mj_footer = self.footer; #pragma mark 上拉加载更多 -(void)loadMoreData{ if (self.arr.count >= 78) { [self.footer setTitle:@"已显示全部内容" forState:MJRefreshStateIdle]; [self.footer setTitle:@"已显示全部内容" forState:MJRefreshStateRefreshing]; [self.footer.loadingView setHidden:YES]; [self.tableview.mj_footer endRefreshing]; return; } self.page += 1; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [self loadData]; [self.tableview.mj_footer endRefreshing]; [self.tableview reloadData]; }); }Swift-MJRefresh(下拉刷新)
Swift-MJRefresh(下拉刷新)下载链接
var page = 1 let header = MJRefreshNormalHeader { self.loadData() self.tableView.mj_header?.endRefreshing() self.tableView.reloadData() } header.setTitle("加载数据完成", for: .noMoreData) header.setTitle("正在加载数据", for: .refreshing) header.setTitle("刷新完毕", for: .pulling) header.lastUpdatedTimeLabel?.isHidden = true tableView.mj_header = headerSwift-MJRefresh(上拉底部无温馨提示)
Swift-MJRefresh(上拉底部无温馨提示)下载链接
var page = 1 tableView.mj_footer = MJRefreshAutoNormalFooter(refreshingTarget: self, refreshingAction: #selector(loadMoreData)) @objc func loadMoreData() { if self.arr.count >= 150 { self.tableView.mj_footer?.endRefreshing() self.tableView.mj_footer?.isHidden = true return } self.page += 1 //延时 0.5s 执行 DispatchQueue.global().asyncAfter(deadline: DispatchTime.now()+1.0) { DispatchQueue.main.async { self.loadData() self.tableView.mj_footer?.endRefreshing() self.tableView.reloadData() } } }Swift-MJRefresh(上拉底部有温馨提示)含实战
Swift-MJRefresh(上载底部有温馨提示)下载链接
var footer = MJRefreshAutoNormalFooter() var page = 1 footer = MJRefreshAutoNormalFooter(refreshingTarget: self, refreshingAction: #selector(loadMoreData)) footer.setTitle("准备加载数据中...", for: .idle) footer.setTitle("努力加载数据中...", for: .refreshing) tableView.mj_footer = footer @objc func loadMoreData() { if arr.count >= 150 { footer.setTitle("已显示全部内容", for: .idle) footer.setTitle("已显示全部内容", for: .refreshing) footer.loadingView?.isHidden = true tableView.mj_footer?.endRefreshing() return } page += 1 //延时 0.5s 执行 DispatchQueue.global().asyncAfter(deadline: DispatchTime.now()+1.0) { DispatchQueue.main.async { self.loadData() self.tableView.mj_footer?.endRefreshing() self.tableView.reloadData() } } }实现代码
private var footer=MJRefreshAutoNormalFooter()private var page=0footer=MJRefreshAutoNormalFooter(refreshingTarget: self, refreshingAction:#selector(buildData))footer.setTitle("准备加载数据中...", for: .idle)footer.setTitle("努力加载数据中...", for: .refreshing)footer.setTitle("没有更多数据了", for: .noMoreData)tableView.mj_footer=footer效果
需求
1.tableview加载数据的时候顶部出现上拉加载更多的提示语
应该这个提示语是上拉加载更多的时候才应该出现的.因为控制器第一次进来的时候tableview没有数据,商家加载更多的提示语有默认设置了,所以就会看到这段提示语.(Tap or pull up to load more)
我做NML音乐播放app的时候看到过有同时默认进来加载数据之前把tableview隐藏它.
等数据请求回来再把它显示出来.就解决了这个问题
2019年做那货商城app的时候我处理这个方法是,等tableview成功加载到数据之后才显示footerview
tableview初始化设置的时候是把footerview隐藏的