Я новичок в программировании на Swift, но не могу найти ответ на мою проблему, которая ...
Когда я представляю простой UIAlertController с обработчиком UIAlertAction, я ожидаю оповещенияотображается, пока пользователь не ответит, затем выполняется обработчик, прежде чем продолжить работу с оставшимся кодом.
Неожиданно кажется, что он завершает кодовый блок перед отображением предупреждения и выполнением обработчика.
Я искал Stackoverflow и перечитал документацию Apple для разработчиков для UIAlertController и UIAlertAction, но не могу понять, почему код не останавливается, пока пользователь не ответит.
Я попытался поставитьUIAlertController кодирует в своей собственной функции, но предупреждение все еще отображается не по порядку.Я думаю, может быть, должна быть задержка, чтобы позволить Alert рисовать до выполнения следующей строки кода (?).
@IBAction func buttonTapped(_ sender: Any) {
let alert = UIAlertController(title: "Ouch", message: "You didn't have to press me so hard!", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Sorry", style: .default, handler: { _ in
self.handleAlert()
}))
self.present(alert, animated: true, completion: nil)
print("Should be printed last!")
}
func handleAlert() {
print("UIAlertAction handler printed me")
}
В приведенном выше коде я ожидаю, что консоль отладки отобразит:
Обработчик UIAlertAction напечатал меня Должен быть напечатан последним!
Но вместо этого он отображает:
Should be printed last!
UIAlertAction handler printed me