Я пытаюсь получить метку для сохранения изображения, используя TextField UIAlertController в Xcode 10.3. Код следующий:
{
...
saveLabel = saveImage(imagePath: imagePath, image: image)
print(saveLabel)
...
}
func saveImage(imagePath: String, image: UIImage) -> String {
var label = "placeholder"
let data = image.jpegData(compressionQuality: 0.5)
if fileManager.createFile(atPath: imagePath as String, contents: data, attributes: nil) {
let myAlert = UIAlertController(title: "Saved", message: "Label photo", preferredStyle: .alert)
myAlert.addTextField { (textField) in textField.placeholder = "Enter Label" }
let labelAction = UIAlertAction(title: "Enter", style: .default, handler: { (_) in
label = myAlert.textFields?[0].text ?? "Saved" })
myAlert.addAction(labelAction)
self.present(myAlert, animated: true, completion: nil)
return label
} else {
print("failed to save")
}
return "not right label"
}
Кажется, все работает, например, изображение было сохранено, за исключением того, что label = "placeholder" был возвращен и напечатан. Текст, который я ввел в диалоговое окно, никогда не возвращался. Используя отладку для пошагового выполнения кода, я обнаружил, что диалоговое окно действительно появилось после того, как функция вернулась и команда была выполнена. Кто-нибудь знает, что я сделал не так? Спасибо.