Как я могу позволить пользователю обновлять таблицу только каждую "n" -ю секунду? - PullRequest
0 голосов
/ 14 декабря 2018

Я добавил 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 голосов
/ 14 декабря 2018

Не удаляйте управление обновлением, это даст плохой пользовательский опыт

Есть несколько вариантов, но я думаю, что вы можете достичь этого с помощью этого

принятия глобальной переменной в вашем классе

var start: CFAbsoluteTime = CFAbsoluteTimeGetCurrent()

и при refreshData проверке метода

let elapsed = CFAbsoluteTimeGetCurrent() - start

вы получите секунды, если они превышают требуемое время, а затем запустите API-интерфейс, просто остановите управление обновлением и назначьте start = CFAbsoluteTimeGetCurrent()

0 голосов
/ 14 декабря 2018

Очень просто;каждый раз, когда пользователь обновляется, вы сохраняете дату в свойстве, и в следующий раз, если 30 секунд не истекли, вы ничего не делаете.

...