是否可以将输入的文本保存到警报';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()”