下拉刷新是很多APP常见功能之一。Swift本身提供了原生态的控件RefreshControl配合UI TableView实现下拉刷新的基本功能,使用简单。
1.在storyboard新建一个View.
2.新建一个Cocoa Touch Class ,名称为PullRefTabByRefreshControlViewController.swift
3.在storyboard中将view的Class绑定为 PullRefTabByRefreshControlViewController
4.在storyboard中将UITableView拖拉到View中
5.编写PullRefTabByRefreshControlViewController的代码
class PullRefTabByRefreshControlViewController: UIViewController , UITableViewDelegate, UITableViewDataSource{
@IBOutlet weak var tableView: UITableView!
//定义UIRefreshCotrol,此控件IOS自带不需要导入
var refreshControl=UIRefreshControl()
//新闻数组集合
var dataArray:[Article] = [Article]()
@IBAction func btnBack(_ sender: Any) {
//self.presentedViewController?.dismiss(animated: true, completion: nil)
self.presentingViewController!.dismiss(animated: true, completion: nil)
}
override func viewDidLoad() {
super.viewDidLoad()
self.automaticallyAdjustsScrollViewInsets = false
tableView.delegate = self as UITableViewDelegate
tableView.dataSource = self as UITableViewDataSource
//添加刷新
refreshControl.addTarget(self, action: #selector(refreshData),
for: .valueChanged)
refreshControl.attributedTitle = NSAttributedString(string: "下拉刷新数据")
tableView.addSubview(refreshControl)
refreshData1()
// Do any additional setup after loading the view.
}
// 刷新数据
func refreshData() {
//移除老数据
self.dataArray.removeAll()
//随机添加5条新数据(时间是当前时间)
for _ in 0..<10 {
let atricle = Article(title: "新闻标题\(Int(arc4random()%1000))",
createDate: Date())
self.dataArray.append(atricle)
}
self.tableView.reloadData()
self.refreshControl.endRefreshing()
}
// 刷新数据
func refreshData1() {
//移除老数据
self.dataArray.removeAll()
//随机添加5条新数据(时间是当前时间)
for _ in 0..<5 {
let atricle = Article(title: "新闻标题\(Int(arc4random()%1000))",
createDate: Date())
self.dataArray.append(atricle)
}
self.tableView.reloadData()
self.refreshControl.endRefreshing()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// 返回记录数
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return dataArray.count;
}
// 返回单元格内容
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)
-> UITableViewCell {
let cell = UITableViewCell(style: UITableViewCellStyle.subtitle,
reuseIdentifier: "cell")
//设置单元格标题
let atricle: Article = dataArray[indexPath.row] as Article
cell.textLabel?.text = atricle.title
//设置单元格副标题
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let str = dateFormatter.string(from: atricle.createDate)
cell.detailTextLabel?.text = str
return cell
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
*/
}
struct Article {
var title:String
var createDate:Date
}
效果如下