Swift3.0 MJRefresh 的简单使用

当我们需要使用下拉刷新数据的时候,我们可以使用 UIRefreshControl,也可以在网上找到众多第三方的刷新库,而 MJRefresh 是一个非常优秀且非常多人使用的刷新库。

MJRefresh 是使用 Objective-C 写的,它有下拉刷新也有上拉刷新加载,而且它可以在控件 UIScrollView、UITableView、UICollectionView、UIWebView 上都可以使用。这里,来介绍一下 MJRefresh Swift3.0 上的简单使用。( Swift 项目中调用 Objective-C 文件的具体流程这里就不介绍了!)

MJRefresh Github地址:https://github.com/CoderMJLee/MJRefresh

MJRefresh 的类结构图:
类结构图

MJRefresh 有很多自定义的内容,以下代码仅仅是简单的操作。

MJRefresh Test Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
// TestViewController.swift
// Mo
//
// Created by moxiaohao on 2016/11/01.
// Copyright © 2016年 moxiaohao. All rights reserved.
//
import UIKit
class TestViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
var tableView: UITableView!
//下拉刷新
var header = MJRefreshNormalHeader()
//上拉加载
var footer = MJRefreshAutoNormalFooter()
override func viewDidLoad() {
super.viewDidLoad()
//建一个tableView
tableView = UITableView(frame: self.view.frame, style: .plain)
tableView.delegate = self
tableView.dataSource = self;
tableView.tableFooterView = UIView()
self.view.addSubview(tableView)
//设置普通下拉刷新
header.setRefreshingTarget(self, refreshingAction: #selector(headerRefresh))
//隐藏最后一次更新时间
header.lastUpdatedTimeLabel.isHidden = true
//自定义各种状态下的文字
header.setTitle("下拉刷新数据", for: .idle)
header.setTitle("松开刷新数据", for: .pulling)
header.setTitle("正在刷新数据", for: .refreshing)
self.tableView.mj_header = header
//设置普通上拉加载
footer.setRefreshingTarget(self, refreshingAction: #selector(footerRefresh))
//自定义各种状态下的文字
footer.setTitle("点击或上拉加载更多", for: .idle)
footer.setTitle("松开加载数据", for: .pulling)
footer.setTitle("正在加载数据", for: .refreshing)
footer.setTitle("已全部加载完!", for: .noMoreData)
self.tableView.mj_footer = footer
}
//下拉更新操作
func headerRefresh() {
//延时1s执行,模拟更新数据(实际上什么都没有更新数据)
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 1) {
self.tableView.reloadData()
self.tableView.mj_header.endRefreshing()
}
}
//点击或上拉加载操作
func footerRefresh() {
//延时1s执行,模拟加载数据(实际上什么都没有加载数据)
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 1) {
self.tableView.reloadData()
self.tableView.mj_footer.endRefreshing()
//设置没有数据停止上拉加载
//self.footer.endRefreshingWithNoMoreData()
}
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cellID = "cellID"
var cell = tableView.dequeueReusableCell(withIdentifier: cellID)
cell = UITableViewCell(style: .default, reuseIdentifier: cellID)
cell!.textLabel!.text = "cell\(indexPath.row)"
return cell!
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}

MJRefresh 下拉刷新和上拉加载的简单效果图:

下拉刷新和上拉加载

分享到 评论