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()