Я написал функцию, которая выдает предупреждение, которое требует от пользователя сделать выбор в меню.Этот выбор будет использоваться для изменения названия кнопки.Проблема в том, что имя кнопки изменяется до того, как будет сделан выбор пользователя.Он заменен предыдущим результатом функции.
Я прочитал, что обработчик может использоваться для задержки выполнения результата, но я не могу понять, как его использовать.
@IBAction func selectProp(_ sender: Any) {
propName.setTitle(menulist(title:"propName", message:""), for: .normal)
print("selected property = ", choice) // }
}
func menulist (title: String, message: String) -> String {
let title1 = "Select Property"
let alert = UIAlertController(title: title1, message: message, preferredStyle:UIAlertControllerStyle.alert)
let k = rentals.count
if k > 0 {
for i in 0 ... k-1 {
alert.addAction(UIAlertAction(title:rentals[i], style: .default, handler: {action in
choice = rentals[i]
print("choice=",choice)
}))
}
alert.addAction(UIAlertAction(title: "Cancel", style: .destructive, handler: {action in
choice = "Select"
print("choice=",choice)
}))
self.present(alert, animated: true, completion: nil)
}
return choice
}
Проблема в том, что имя кнопки изменяется до того, как будет сделан выбор пользователя, и оператор print будет выполнен до того, как пользователь сделает выбор.Результаты, изменение кнопок и печать, основаны на предыдущем пользовательском вводе.