我怎样才能让用户每 "n" 秒只刷新一次 table?
How can I allow a user to only refresh a table every "n"th second?
我在我的表格视图中添加了一个 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
}
很简单;每次用户刷新时,你将日期存储在 属性 中,下一次,如果 30 秒还没有过去,你什么都不做。
不要删除刷新控件,否则会导致糟糕的用户体验
有几种选择,但我认为你可以通过这个实现它
在你的 class
中获取一个全局变量
var start: CFAbsoluteTime = CFAbsoluteTimeGetCurrent()
以及 refreshData
方法检查
let elapsed = CFAbsoluteTimeGetCurrent() - start
如果它比你要求的时间长,你会得到秒然后触发 API 否则就停止刷新控制并重新分配 start = CFAbsoluteTimeGetCurrent()
我在我的表格视图中添加了一个 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
}
很简单;每次用户刷新时,你将日期存储在 属性 中,下一次,如果 30 秒还没有过去,你什么都不做。
不要删除刷新控件,否则会导致糟糕的用户体验
有几种选择,但我认为你可以通过这个实现它
在你的 class
中获取一个全局变量var start: CFAbsoluteTime = CFAbsoluteTimeGetCurrent()
以及 refreshData
方法检查
let elapsed = CFAbsoluteTimeGetCurrent() - start
如果它比你要求的时间长,你会得到秒然后触发 API 否则就停止刷新控制并重新分配 start = CFAbsoluteTimeGetCurrent()