【发布时间】:2017-05-25 12:09:06
【问题描述】:
刷新进度完成后,我的刷新控件不会消失。即使我调用 endRefreshing(),它仍然是动画。
import UIKit
class MyTableViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
refreshControl = UIRefreshControl()
refreshControl?.attributedTitle = NSAttributedString(string: "Pull to refresh")
refreshControl?.addTarget(self, action: #selector(self.refresh), for: UIControlEvents.valueChanged)
tableView.addSubview(refreshControl!)
setData()
}
func setData(){
ApiClient.sharedInstance().getData{(myData, error) in
if (myData != nil){
DispatchQueue.main.async {
self.myLabel.text = myData
self.refreshControl?.endRefreshing()
}
}
if (error != nil){
print(error)
}
}
}
func refresh(sender:AnyObject) {
setData()
}
}
你能帮帮我吗?
【问题讨论】:
-
你需要在主线程上调用endRefreshing。
-
这不是已经用“DispatchQueue.main.async {”完成了吗?
-
self.myLabel.text更新了吗? -
异步是后台线程。同步改成主线程/dispatch_get_main_queue
-
哦,我想我明白了:当我松开手指时,圆圈消失了。但是当我按住手指时,即使刷新完成,指示器仍然保持动画。但显然(如在contacts-和mail.app中),在松开手指之前隐藏指示器并不是故意的……你能同意吗? - 例如,为了实现 WhatsApp 中的效果,我想我只是要使用 refreshControll.isHidden 隐藏指示器
标签: ios swift tableview refresh