如何允许用户每“n”秒刷新一次表?
Posted
技术标签:
【中文标题】如何允许用户每“n”秒刷新一次表?【英文标题】:How can I allow a user to only refresh a table every "n"th second? 【发布时间】:2018-12-14 05:00:20 【问题描述】:我在我的表格视图中添加了一个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 秒时,你的意思是他们第一次获取后 30 秒? 您想在 30 秒后刷新数据吗? 简单的技巧就是从tableview中删除UIRefreshControl
,然后在第n秒后添加回tableview。
您可以使用Timer
轻松做到这一点,看看***.com/a/43993602/4003548。
神奇的术语是:定时器。在“第一次”刷新设计时启动它以在每 30 秒后调用指定的方法。
【参考方案1】:
很简单;每次用户刷新时,您将 Date 存储在一个属性中,下一次,如果 30 秒还没有过去,您什么也不做。
【讨论】:
【参考方案2】:不要移除刷新控件,否则会导致糟糕的用户体验
有几种选择,但我认为你可以通过这个实现它
在你的类中取一个全局变量
var start: CFAbsoluteTime = CFAbsoluteTimeGetCurrent()
并在refreshData
方法检查
let elapsed = CFAbsoluteTimeGetCurrent() - start
如果它大于您所需的时间,您将获得秒数,然后触发 API,否则只需停止刷新控制并重新分配 start = CFAbsoluteTimeGetCurrent()
【讨论】:
以上是关于如何允许用户每“n”秒刷新一次表?的主要内容,如果未能解决你的问题,请参考以下文章