我在表视图中添加了UIRefreshControl
,以便允许用户拉动刷新。
他们不需要每30秒不断刷新一次。我怎样才能让他们每30秒做一次?
@IBOutlet weak var tableView: UITableView!
private let refresher: UIRefreshControl = UIRefreshControl()
override func viewDidLoad() {
super.viewDidLoad()
//load Event data
loadData()
// Add Refresh Control to Table View
tableView.refreshControl = refresher
refresher.addTarget(self, action: #selector(refreshData(_:)), for: .valueChanged)
refresher.attributedTitle = NSAttributedString(string: "Fetching events...")
}
@objc private func refreshData(_ sender: Any) {
// Fetch Data
loadData()
}
private func loadData() {
//code here for grabbing data
}
答案 0 :(得分:4)
非常简单;每次用户刷新时,都将Date存储在属性中,下次,如果还没有经过30秒,则什么都不做。
答案 1 :(得分:0)
不要删除刷新控件,它会给用户带来糟糕的体验
有几种选择,但我认为您可以通过此方法实现
在您的课程中获取一个全局变量
var start: CFAbsoluteTime = CFAbsoluteTimeGetCurrent()
并进行refreshData
方法检查
let elapsed = CFAbsoluteTimeGetCurrent() - start
如果大于所需时间,您将获得秒数,然后以其他方式启动API,只需停止刷新控制并重新分配start = CFAbsoluteTimeGetCurrent()