Проблема в следующем. Есть ViewController и в него встроен tableView. Есть массив с данными, которые и отображает tableView. Данные в массив приходят с сервера. Все работает хорошо, без единого глюка (делал как в курсе про tableView).
Теперь к проблеме. Для обновления таблицы раньше использовал кнопку (UIButton) которая очищала массив, и затем запускала функцию загрузки данных и соответственно после загрузки обновляла таблицу. Все работает отлично! никаких проблем не наблюдается.
Решил уйти от кнопки “обновить” и сделать это с помощью pull to refresh.
var refreshControl: UIRefreshControl = {
let refreshControl = UIRefreshControl()
refreshControl.addTarget(self, action:
#selector(handleRefresh(_:)),
for: UIControlEvents.valueChanged)
refreshControl.tintColor = UIColor.gray
return refreshControl
}()
@objc func handleRefresh(_ refreshControl: UIRefreshControl) {
matchArray = []
loadData()
refreshControl.endRefreshing()
}
Так вот, когда я обновляю с помощью нажатия кнопки, она выполняет код который ниже, то все проходит хорошо!
@IBAction func refreshPage(_ sender: UIBarButtonItem) {
matchArray = []
loadData()
}
а если я эти самые методы запускаю в handleRefresh, то происходит ошибка!!! Почему на кнопку работает нормально, а при pull to refresh ошибка???
Ошибка index out of range. Типа массив пуст, и соответсвенно tableview не может отобразить данные. НО!!! ошибка возникает только если быстро потянуть tableView вниз и бросить. А если “не бросать” а потянуть, подождать секунду и отпустить, то все отлично загрузится!!!