我使用UIAlertController显示textField以输入电话号码。当我单击OK时,我希望将textfield的文本内容存储在一个变量中,这样我就可以对它进行一些操作。这是代码:
@IBAction func popup(sender : AnyObject) {
var popupText: String = ""
func config(textField: UITextField!)->Void{
popupText = textField.text
}
var alc: UIAlertController = UIAlertController(title: "Phone", message: "Please enter phone #: ", preferredStyle: UIAlertControllerStyle.Alert)
alc.addTextFieldWithConfigurationHandler(config)
alc.addAction(UIAlertAction(title: "Submit", style: UIAlertActionStyle.Default, handler:{ UIAlertAction in
print(popupText)
self.performSegueWithIdentifier("popupSegue", sender: alc)
}))
alc.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: nil))
self.presentViewController(alc, animated: true, completion: nil)
}
当我尝试访问popupText并打印其内容时,它似乎是空的,因为控制台没有显示任何内容。有没有办法访问这个textField的内容,甚至有一个标识符? (UIAlertController似乎没有让我尝试" alc.textField.text)我猜测我是如何使用" config"是错的,但我仍然不知道如何访问该控制器的文本字段。任何帮助,将不胜感激。谢谢!
答案 0 :(得分:0)
你的方式存在一些问题。
var popupText: String = ""
func config(textField: UITextField!)->Void{
popupText = textField.text
}
...
alc.addTextFieldWithConfigurationHandler(config)
您传递给config
的{{1}}处理程序用于配置新文本字段,但看起来您正在尝试访问其值。文本字段是全新的,因此它将是空的,我认为这对您没有用。如果您需要更改文本字段的某些属性,这是正确的位置,否则只需将addTextFieldWithConfigurationHandler
传递给nil
。
addTextField...
func config(textField: UITextField!)->Void{
textField.textColor = UIColor.redColor()
}
这里有两个问题 - alc.addAction(UIAlertAction(title: "Submit", style: UIAlertActionStyle.Default, handler:{ UIAlertAction in
print(popupText)
self.performSegueWithIdentifier("popupSegue", sender: alc)
}))
只是一个空的String变量,它没有以任何方式链接到文本字段,警报操作或警报控制器。您想要访问文本字段本身,您可以使用popupText
找到该字段。其次,它看起来你希望将文本字段的值存储在alc.textFields[0]
中,但这是该方法的局部变量,并且实际上并不能在其他任何地方访问。根据您的想法,我建议您将电话号码存储在班级的实例属性中。无论如何,你想要更像这样的东西:
popupText