Swift中的UIRefreshController可以非常方便地实现下拉刷新功能。它其实属于UITableViewController的代理。
我们可以在任意的UIViewController中使用它来实现下拉刷新,唯一需要注意的是,你的类需要继承UITableViewController。
如果你不想继承UITableViewController,那么就必须实现UITableViewDelegate代理。
我写了一个方法,来实现下拉刷新功能。这个方法可以直接拿去使用:
func initRefreshControl(){
/*
* 初始化控制器
*/
self.refreshControl = UIRefreshControl()
/*
* 添加控制目标,并且在#selector中设置事件及调用的方法
* forControlEvents中设置的是用户触摸事件
*/
self.refreshControl?.addTarget(self, action: #selector(refreshData), forControlEvents: UIControlEvents.ValueChanged)
/*
* 设置下拉出现的提示文字
*/
self.refreshControl?.attributedTitle = NSAttributedString(string: "数据加载中...")
/*
* 将控制器加入到界面视图中
*/
self.tableViewOperationRecord.addSubview(self.refreshControl!)
}
然后再编写一个方法,用来触发下拉刷新后的事件即可:
func refreshData(){
print("refresh!")
}
你可以在这个方法里面做任何你想做的事情,比如说从服务器端获取新的数据,然后重新绘制界面,等等
最后,千万不要忘记结束下拉事件:
self.refreshControl?.endRefreshing()