Можно ли сохранить текст, введенный в текстовое поле предупреждения в SwiftUI, и отобразить его в приложении следующим образом -> Текст («ввод текста предупреждения здесь»)? - PullRequest
0 голосов
/ 14 февраля 2020

До сих пор я мог справиться с отображением текстового поля в предупреждении, в котором пользователь может ввести некоторый текст, но не смог использовать этот текст и отобразить его внутри приложения.

Вот код для предупреждения:

private func alert() {
        let alert = UIAlertController(title: "Enter Name", message: "...or pseudo", preferredStyle: .alert)
        alert.addTextField { (textField) in
            textField.placeholder = "Enter something"
        }

        alert.addAction(UIAlertAction(title: "Done", style: .default) { _ in })
        let textField = alert.textFields![0] as UITextField
        alertInput = textField.text ?? "Name"
        showAlert(alert: alert)
    }

    func showAlert(alert: UIAlertController) {
        if let controller = topMostViewController() {
            controller.present(alert, animated: true)
        }
    }

И вот как я пытаюсь реализовать его в теле:

Section{
                    VStack {
                        Button(action: {
                            withAnimation {
                                self.alert()
                            }
                        }) {
                            Text(alertInput)
                        }
                    }
                }

alertInput инициализируется перед телом следующим образом:

@State private var alertInput = ""

1 Ответ

0 голосов
/ 14 февраля 2020

Вы захотите получить значение текстового поля из обработчика кнопки Готово. Поэтому все, что вам нужно сделать, это сдвинуть скобку вниз:

alert.addAction(UIAlertAction(title: "Done", style: .default) { _ in
    let textField = alert.textFields![0] as UITextField
    alertInput = textField.text ?? "Name"
})

Код внутри этого замыкания вызывается, когда пользователь касается этого настроенного вами действия UIAlertAction.

Обратите внимание, что если поле Если оставить пустым, значение textField.text будет "", а не nil, поэтому, чтобы использовать предоставленное вами значение по умолчанию, вам могут потребоваться дополнительные логики c, чтобы также проверить пустую строку .

...