Obtenha o valor de entrada de TextField em alerta iOS em Swift
120
Estou tentando fazer uma mensagem de alerta com a entrada e, em seguida, obter o valor da entrada. Eu encontrei muitos bons tutoriais sobre como fazer o campo de texto de entrada. mas não consigo obter o valor do alerta.
//1. Create the alert controller.
let alert =UIAlertController(title:"Some Title", message:"Enter a text", preferredStyle:.alert)//2. Add the text field. You can configure it however you need.
alert.addTextField {(textField)in
textField.text ="Some default text"}// 3. Grab the value from the text field, and print it when the user clicks OK.
alert.addAction(UIAlertAction(title:"OK", style:.default, handler:{[weak alert](_)inlet textField = alert.textFields![0]// Force unwrapping because we know it exists.
print("Text field: \(textField.text)")}))// 4. Present the alert.
self.present(alert, animated:true, completion:nil)
Swift 2.x
Supondo que você deseja um alerta de ação no iOS:
//1. Create the alert controller.
var alert =UIAlertController(title:"Some Title", message:"Enter a text", preferredStyle:.Alert)//2. Add the text field. You can configure it however you need.
alert.addTextFieldWithConfigurationHandler({(textField)->Voidin
textField.text ="Some default text."})//3. Grab the value from the text field, and print it when the user clicks OK.
alert.addAction(UIAlertAction(title:"OK", style:.Default, handler:{[weak alert](action)->Voidinlet textField = alert.textFields![0]asUITextField
println("Text field: \(textField.text)")}))// 4. Present the alert.
self.presentViewController(alert, animated:true, completion:nil)
Não é um problema. Lembre-se de marcar como Aceito se for útil. Obrigado!
Andy Ibanez
Olá @AndyIbanez, estou tentando implementar seu código em meu aplicativo, mas está declarando o erro "Uso de identificador não declarado var" Sou novo no Xcode, então desculpas se este é um erro básico em meu nome
Sjharrison
@Sjharrison Meu código é para Swift. A única razão que consigo pensar que causaria problemas com a varpalavra-chave é se você estivesse escrevendo em Objective-C.
Andy Ibanez
1
Alguém pode explicar por quê [weak alert]? Estou olhando para o Swift 3.
Andrej
3
Para o alerta Swift 3 na etapa 3. é opcional, é necessário "?" let textField = alert?.textFields![0] // Force unwrapping because we know it exists.print("Text field: \(textField?.text)")
James,
27
Swift 3/4
Você pode usar a extensão abaixo para sua conveniência.
Uso dentro de um ViewController:
showInputDialog(title:"Add number",
subtitle:"Please enter the new number below.",
actionTitle:"Add",
cancelTitle:"Cancel",
inputPlaceholder:"New number",
inputKeyboardType:.numberPad){(input:String?)in
print("The new number is \(input ?? "")")}
apenas observe que se você for apresentar a ação "Adicionar", certifique-se de que o estilo seja "padrão" e não "destrutivo" - alert.addAction (UIAlertAction (título: actionTitle, estilo: .default ...
Bishal Ghimire
12
Em Swift5 ans Xcode 10
Adicione dois campos de texto com as ações Salvar e Cancelar e leia os dados de texto dos Campos de Texto
func alertWithTF(){//Step : 1
let alert =UIAlertController(title:"Great Title", message:"Please input something", preferredStyle:UIAlertController.Style.alert )//Step : 2
let save =UIAlertAction(title:"Save", style:.default){(alertAction)inlet textField = alert.textFields![0]asUITextFieldlet textField2= alert.textFields![1]asUITextFieldif textField.text !=""{//Read TextFields text data
print(textField.text!)
print("TF 1 : \(textField.text!)")}else{
print("TF 1 is Empty...")}if textField2.text !=""{
print(textField2.text!)
print("TF 2 : \(textField2.text!)")}else{
print("TF 2 is Empty...")}}//Step : 3
//For first TF
alert.addTextField {(textField)in
textField.placeholder ="Enter your first name"
textField.textColor =.red
}//For second TF
alert.addTextField {(textField)in
textField.placeholder ="Enter your last name"
textField.textColor =.blue
}//Step : 4
alert.addAction(save)//Cancel action
let cancel =UIAlertAction(title:"Cancel", style:.default){(alertAction)in}
alert.addAction(cancel)//OR single line action
//alert.addAction(UIAlertAction(title: "Cancel", style: .default) { (alertAction) in })
self.present(alert, animated:true, completion:nil)}
Respostas:
Atualizado para Swift 3 e superior:
Swift 2.x
Supondo que você deseja um alerta de ação no iOS:
fonte
var
palavra-chave é se você estivesse escrevendo em Objective-C.[weak alert]
? Estou olhando para o Swift 3.let textField = alert?.textFields![0] // Force unwrapping because we know it exists.
print("Text field: \(textField?.text)")
Swift 3/4
Você pode usar a extensão abaixo para sua conveniência.
Uso dentro de um
ViewController
:O código de extensão:
fonte
Em Swift5 ans Xcode 10
Adicione dois campos de texto com as ações Salvar e Cancelar e leia os dados de texto dos Campos de Texto
Para obter mais explicações https://medium.com/@chan.henryk/alert-controller-with-text-field-in-swift-3-bda7ac06026c
fonte