У меня есть таблица и функция вызова API и API.Я просто использую свою функцию apicall () для viewDidLoad () и Table.reloadData () после получения данных.Это отлично работает в первый раз, когда я получаю этот экран.
У меня есть код внутри таблицы.
zerointdeparturehour = String(departurehour[indexPath.row])
Который получает время из массива, который заполняется внутри вызывающей функции API.
Все отлично работает как надо.Представление загружается, вызывается API, перезагружается данные и табличное представление и заполняется.
и, если API вызывается снова, все значения массива, созданные из вызова API, удаляются с помощью escapehour.removeAll ().(Я использовал это, чтобы я мог вызывать API снова и снова на одном и том же экране для разных дат)
НО,
, если я нажимаю кнопку (кнопка по умолчанию), чтобы вернуться на предыдущую страницуи если я пытаюсь вернуться на эту страницу снова, viewDidLoad () вызывает функцию apicall (),
, но я получаю ошибку в
zerointdeparturehour = String(departurehour[indexPath.row]) - Index out of bounds.
Почему это происходит ТОЛЬКО, когда я двигаюсьвернуться со страницы просмотра таблицы обратно на предыдущую страницу и снова вернуться на страницу просмотра таблицы?(Я знаю, что это происходит из-за того, что в данный момент массив вылетов равен нулю, потому что API не заполнил информацию внутри него)
Почему не происходит в первый раз.
Я получаю свою строку отApi, который работает в первый раз.
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return flightcount // comes from api
}
I do have a function to check if the flightcount is 0 or not and what to do when count is 0 .
Приложение зависало, потому что flightcount сохранил значение из предыдущего экрана, и таблица пыталась загрузить это значение, что привело к сбою.
Я исправил его, просто переинициализировав его как 0.
override func viewDidAppear(_ animated: Bool) {
flightcount = 0
}
На предыдущем экране.Спасибо, что указал мне правильное направление.(оба, кто прокомментировал)