FEATURED · 精选文章

OC/Swift 第三方 MJRefresh(源码)

发布时间 / 2026/9/15 22:57:08
来源 / 创域科博编辑部
栏目 / 资讯中心
OC/Swift 第三方 MJRefresh(源码) 一直觉得自己写的不是技术而是情怀一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的希望我的这条路能让你们少走弯路希望我能帮你们抹去知识的蒙尘希望我能帮你们理清知识的脉络希望未来技术之巅上有你们也有我。文章目录前言正题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 footerMJRefreshAutoNormalFooter()private var page0footerMJRefreshAutoNormalFooter(refreshingTarget: self, refreshingAction:#selector(buildData))footer.setTitle(准备加载数据中..., for: .idle)footer.setTitle(努力加载数据中..., for: .refreshing)footer.setTitle(没有更多数据了, for: .noMoreData)tableView.mj_footerfooter效果需求1.tableview加载数据的时候顶部出现上拉加载更多的提示语应该这个提示语是上拉加载更多的时候才应该出现的.因为控制器第一次进来的时候tableview没有数据,商家加载更多的提示语有默认设置了,所以就会看到这段提示语.(Tap or pull up to load more)我做NML音乐播放app的时候看到过有同时默认进来加载数据之前把tableview隐藏它.等数据请求回来再把它显示出来.就解决了这个问题2019年做那货商城app的时候我处理这个方法是,等tableview成功加载到数据之后才显示footerviewtableview初始化设置的时候是把footerview隐藏的
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻