如何允许用户仅在第“ n”秒刷新一次表?

时间:2018-12-14 05:00:20

标签: ios swift uitableview uirefreshcontrol

我在表视图中添加了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
}

2 个答案:

答案 0 :(得分:4)

非常简单;每次用户刷新时,都将Date存储在属性中,下次,如果还没有经过30秒,则什么都不做。

答案 1 :(得分:0)

不要删除刷新控件,它会给用户带来糟糕的体验

有几种选择,但我认为您可以通过此方法实现

在您的课程中获取一个全局变量

var start: CFAbsoluteTime = CFAbsoluteTimeGetCurrent()

并进行refreshData方法检查

let elapsed = CFAbsoluteTimeGetCurrent() - start

如果大于所需时间,您将获得秒数,然后以其他方式启动API,只需停止刷新控制并重新分配start = CFAbsoluteTimeGetCurrent()