从 UIAlertView 文本字段获取文本的问题
Problems with getting text from UIAlertView textfield
在我的应用程序中,我想要一个带有文本字段的警报。单击 "Done" 后,我想将文本字段输入保存在一个字符串中。单击 "Cancel" 后,我只想关闭警报。我创建了这样的警报:
var alert = UIAlertView()
alert.title = "Enter Input"
alert.addButtonWithTitle("Done")
alert.alertViewStyle = UIAlertViewStyle.PlainTextInput
alert.addButtonWithTitle("Cancel")
alert.show()
let textField = alert.textFieldAtIndex(0)
textField!.placeholder = "Enter an Item"
println(textField!.text)
警报看起来像这样:
我想知道如何从文本字段中获取文本,以及如何为 "Done" 按钮和 "Cancel" 按钮创建事件。
您将必须实施 UIAlertView Delegate 的
optional func alertView(_ alertView: UIAlertView, clickedButtonAtIndex buttonIndex: Int)
您可以使用 UIAlertController 而不是 UIAlertView。
我已经使用 UIAlertController 实现并测试了您的实际需求。请尝试以下代码
var tField: UITextField!
func configurationTextField(textField: UITextField!)
{
print("generating the TextField")
textField.placeholder = "Enter an item"
tField = textField
}
func handleCancel(alertView: UIAlertAction!)
{
print("Cancelled !!")
}
var alert = UIAlertController(title: "Enter Input", message: "", preferredStyle: .Alert)
alert.addTextFieldWithConfigurationHandler(configurationTextField)
alert.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler:handleCancel))
alert.addAction(UIAlertAction(title: "Done", style: .Default, handler:{ (UIAlertAction) in
print("Done !!")
print("Item : \(self.tField.text)")
}))
self.presentViewController(alert, animated: true, completion: {
print("completion block")
})
对于 iOS 8+,您应该使用 UIAlertController 而不是 UIAlertView。要支持 iOS 7 你应该实现 (UIAlertViewDelegate):
func alertView(alertView: UIAlertView, clickedButtonAtIndex buttonIndex: Int)
{
//...
let textField = alertView.textFieldAtIndex(0)
}
对于SWIFT3
@IBAction func ForgotPassword(_ sender: Any) {
let alertController = UIAlertController(title: "Email?", message: "Please input your email:", preferredStyle: .alert)
let confirmAction = UIAlertAction(title: "Confirm", style: .default) { (_) in
if let field = alertController.textFields![0] as? UITextField {
// store and use entered data
} else {
print("please enter email id")
}
}
let cancelAction = UIAlertAction(title: "Cancel", style: .cancel) { (_) in }
alertController.addTextField { (textField) in
textField.placeholder = "Email"
}
alertController.addAction(confirmAction)
alertController.addAction(cancelAction)
self.present(alertController, animated: true, completion: nil)
}
希望对其他人有所帮助:)
在我的应用程序中,我想要一个带有文本字段的警报。单击 "Done" 后,我想将文本字段输入保存在一个字符串中。单击 "Cancel" 后,我只想关闭警报。我创建了这样的警报:
var alert = UIAlertView()
alert.title = "Enter Input"
alert.addButtonWithTitle("Done")
alert.alertViewStyle = UIAlertViewStyle.PlainTextInput
alert.addButtonWithTitle("Cancel")
alert.show()
let textField = alert.textFieldAtIndex(0)
textField!.placeholder = "Enter an Item"
println(textField!.text)
警报看起来像这样:
我想知道如何从文本字段中获取文本,以及如何为 "Done" 按钮和 "Cancel" 按钮创建事件。
您将必须实施 UIAlertView Delegate 的
optional func alertView(_ alertView: UIAlertView, clickedButtonAtIndex buttonIndex: Int)
您可以使用 UIAlertController 而不是 UIAlertView。
我已经使用 UIAlertController 实现并测试了您的实际需求。请尝试以下代码
var tField: UITextField!
func configurationTextField(textField: UITextField!)
{
print("generating the TextField")
textField.placeholder = "Enter an item"
tField = textField
}
func handleCancel(alertView: UIAlertAction!)
{
print("Cancelled !!")
}
var alert = UIAlertController(title: "Enter Input", message: "", preferredStyle: .Alert)
alert.addTextFieldWithConfigurationHandler(configurationTextField)
alert.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler:handleCancel))
alert.addAction(UIAlertAction(title: "Done", style: .Default, handler:{ (UIAlertAction) in
print("Done !!")
print("Item : \(self.tField.text)")
}))
self.presentViewController(alert, animated: true, completion: {
print("completion block")
})
对于 iOS 8+,您应该使用 UIAlertController 而不是 UIAlertView。要支持 iOS 7 你应该实现 (UIAlertViewDelegate):
func alertView(alertView: UIAlertView, clickedButtonAtIndex buttonIndex: Int)
{
//...
let textField = alertView.textFieldAtIndex(0)
}
对于SWIFT3
@IBAction func ForgotPassword(_ sender: Any) {
let alertController = UIAlertController(title: "Email?", message: "Please input your email:", preferredStyle: .alert)
let confirmAction = UIAlertAction(title: "Confirm", style: .default) { (_) in
if let field = alertController.textFields![0] as? UITextField {
// store and use entered data
} else {
print("please enter email id")
}
}
let cancelAction = UIAlertAction(title: "Cancel", style: .cancel) { (_) in }
alertController.addTextField { (textField) in
textField.placeholder = "Email"
}
alertController.addAction(confirmAction)
alertController.addAction(cancelAction)
self.present(alertController, animated: true, completion: nil)
}
希望对其他人有所帮助:)