Показываю загрузчик перед отправкой запроса на сервер.После получения ответа - вызывается функция остановки загрузчика.
Первый раз работает нормально.Но при повторном входе на страницу загрузчик не выключается и остается крутиться вечно.(Я полагаю, что это связано с тем, что запрос уже выполняется намного быстрее, и нет существенной задержки).
Для ясности я добавил маркеры в свой код.
Скажите, пожалуйста, чтопроблема и как я могу это исправить?
var alert : UIAlertController?
func showLoader(){
self.alert = UIAlertController(title: nil, message: NSLocalizedString("pleaseWait", comment: "Текст ожидания загрузки"), preferredStyle: .alert)
let loadingIndicator = UIActivityIndicatorView(frame: CGRect(x: 10, y: 5, width: 50, height: 50))
loadingIndicator.hidesWhenStopped = true
loadingIndicator.style = UIActivityIndicatorView.Style.gray
loadingIndicator.startAnimating();
self.alert!.view.addSubview(loadingIndicator)
present(self.alert!, animated: true, completion: nil)
Logger.Log("Alert is presented")
}
func stopLoader(){
if let _ = self.alert {
Logger.Log("Loader isBeingPresented = \(self.alert!.isBeingPresented)")
Logger.Log("Loader isBeingDismissed1 = \(self.alert!.isBeingDismissed)")
self.alert!.dismiss(animated: false, completion: nil)
Logger.Log("Loader isBeingDismissed2 = \(self.alert!.isBeingDismissed)")
self.alert = nil
Logger.Log("Loader dismissed")
} else {
Logger.Log("Alert failed")
}
}
** Выбрано: 2019-03-01 17:00:00 +0000 ** // Первая попытка
** Предупреждениепредставлено **
** Файл существует!**
** requestDone **
** Загрузчик isBeingPresented = false **
** Загрузчик isBeingDismissed1 = false **
** Загрузчик isBeingDismissed2 = true **
** Загрузчик отклонен**
** Выбрано: 2019-03-01 17:00:00 +0000 ** // вторая попытка
** Предупреждение отправлено **
** Файл существует!**
** requestDone **
** Загрузчик isBeingPresented = false **
** Загрузчик isBeingDismissed1 = false **
** Загрузчик isBeingDismissed2 = false **
** Загрузчик отклонен**