Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以将输入的文本保存到警报';s SwiftUI中的文本字段并在应用程序中显示,如下所示->;文本(“此处输入警告文本”)?_Swift_Xcode_Swiftui_Alert_Textfield - Fatal编程技术网

是否可以将输入的文本保存到警报';s SwiftUI中的文本字段并在应用程序中显示,如下所示->;文本(“此处输入警告文本”)?

是否可以将输入的文本保存到警报';s SwiftUI中的文本字段并在应用程序中显示,如下所示->;文本(“此处输入警告文本”)?,swift,xcode,swiftui,alert,textfield,Swift,Xcode,Swiftui,Alert,Textfield,到目前为止,我能够处理在警报中显示文本字段的问题,用户可以在警报中输入一些文本,但无法使用该文本并在应用程序中显示 以下是警报的代码: private func alert() { let alert = UIAlertController(title: "Enter Name", message: "...or pseudo", preferredStyle: .alert) alert.addTextField { (textField

到目前为止,我能够处理在警报中显示文本字段的问题,用户可以在警报中输入一些文本,但无法使用该文本并在应用程序中显示

以下是警报的代码:

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 = ""

您需要从“完成”按钮的处理程序中获取文本字段的值。因此,您只需向下移动支架:

alert.addAction(UIAlertAction(title: "Done", style: .default) { _ in
    let textField = alert.textFields![0] as UITextField
    alertInput = textField.text ?? "Name"
})
当用户点击您设置的此UIAlertAction时,将调用此闭包中的代码


请注意,如果该字段为空,则
textField.text
的值将为
,而不是
nil
,因此为了使用您提供的默认值,您可能还需要一些额外的逻辑来检查空白字符串。

答案工作正常,完整的代码包括“topMostViewController()”