Я работаю с простой кнопкой, которая при нажатии запускает созданную мной функцию.
Первоначально я написал код следующим образом:
func askQuestion() {
// runs code to ask a question
}
@IBAction func buttonTapped(_ sender: UIButton) {
let ac = UIAlertController(title: title, message: "You tapped the button.", preferredStyle: .alert)
ac.addAction(UIAlertAction(title: "Continue", style: .default, handler: askQuestion))
present(ac, animated: true)
Но это возвращает ошибка:
Cannot convert value of type '() -> ()' to expected argument type '((UIAlertAction) -> Void)?'
Исправлено, когда вы добавляете следующий параметр в askQuestion ():
askQuestion(action: UIAlertAction! = nil)
Почему метод обработчика, переданный в UIAlertAction, требует, чтобы он принимал параметр UIAlertAction ? Это кажется ненужным шагом, но я подумал, что это может быть способ отсканировать ваш код на наличие подсказок, что эта функция вызывается кнопкой.