У меня есть tableView, где ячейки появляются с определенной задержкой. Задержка зависит от того, сколько букв в тексте каждой ячейки. Поэтому мой вопрос заключается в том, есть ли способ изменить время задержки, если пользователь что-то делает (например, прокручивает tableView).
В идеале я хочу, чтобы следующая ячейка появлялась без задержки вообще, если tableView прокручивается вниз.
Я предполагаю, что ответ лежит где-то в DispatchQueue.main.async(execute: task)
. Хотя я не уверен, выполняет ли он только следующую задачу в очереди или все задачи в очереди. (Видимо, мне нужно только следующее задание). Во всяком случае с кодом ниже мое приложение вылетает.
var task: DispatchWorkItem?
var lastContentOffset: CGFloat = 0
//Checking if tableView was scrolled.
override func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
if lastContentOffset < scrollView.contentOffset.y {
print("Table view scrolled-down!")
DispatchQueue.main.async(execute: task!)
}
else{
print("Scrolled up")
}
}
//Updating my tableView with delay
func updateTableView(nextPassageID: Int) {
task = DispatchWorkItem {
self.numberOfCells += 1
let indexPath = IndexPath(row: nextPassageID, section: 0)
self.tableView.insertRows(at: [indexPath], with: .fade)
}
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + delay, execute: task!)
}
Любая помощь будет принята с благодарностью. Ура!