Получить входное значение из TextField в предупреждении iOS в Swift
123
Я пытаюсь создать предупреждающее сообщение с вводом, а затем получить значение из ввода. Я нашел много хороших руководств по созданию текстового поля ввода. но я не могу получить значение из предупреждения.
//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
Предполагая, что вам нужно уведомление о действии на 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)
Не проблема. Не забудьте пометить это как Принято, если это вам помогло. Спасибо!
Энди Ибанез
Привет, @AndyIbanez. Я пытаюсь реализовать ваш код в своем приложении, однако в нем указывается ошибка «Использование необъявленного идентификатора var». Я новичок в Xcode, поэтому извиняюсь, если это основная ошибка от моего имени
Sjharrison
@Sjharrison Мой код предназначен для Swift. Единственная причина, по которой я могу думать, это вызовет у вас проблемы с varключевым словом, - это если вы пишете на Objective-C.
Энди Ибанез
1
Кто-нибудь может объяснить, почему [weak alert]? Я смотрю на Swift 3.
Андрей
3
Для Swift 3 предупреждение на шаге 3. необязательно, необходимо "?" let textField = alert?.textFields![0] // Force unwrapping because we know it exists.print("Text field: \(textField?.text)")
Джеймс
27
Swift 3/4
Вы можете использовать указанное ниже расширение для вашего удобства.
Использование внутри 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 ?? "")")}
просто обратите внимание, что если вы собираетесь представить действие «Добавить», убедитесь, что стиль «по умолчанию» не «деструктивный» - alert.addAction (UIAlertAction (title: actionTitle, style: .default ...
Bishal Ghimire
13
В Swift5 и Xcode 10
Добавьте два текстовых поля с помощью действий «Сохранить» и «Отменить» и прочитайте текстовые данные текстовых полей.
func alertWithTF(){//Step : 1let alert =UIAlertController(title:"Great Title", message:"Please input something", preferredStyle:UIAlertController.Style.alert )//Step : 2let 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 actionlet 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)}
Ответы:
Обновлено для Swift 3 и выше:
Swift 2.x
Предполагая, что вам нужно уведомление о действии на iOS:
источник
var
ключевым словом, - это если вы пишете на Objective-C.[weak alert]
? Я смотрю на Swift 3.let textField = alert?.textFields![0] // Force unwrapping because we know it exists.
print("Text field: \(textField?.text)")
Swift 3/4
Вы можете использовать указанное ниже расширение для вашего удобства.
Использование внутри
ViewController
:Код расширения:
источник
В Swift5 и Xcode 10
Добавьте два текстовых поля с помощью действий «Сохранить» и «Отменить» и прочитайте текстовые данные текстовых полей.
Для получения дополнительных объяснений https://medium.com/@chan.henryk/alert-controller-with-text-field-in-swift-3-bda7ac06026c
источник