无法在AlertController中添加文本字段
var textFD = UITextField.init()
var tempStr : String!
var datax = [Tasks]()
var tempArr = [NSManagedObject]()
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.rightBarButtonItem = UIBarButtonItem.init(title: "Add", style: UIBarButtonItemStyle.plain, target: self, action:#selector(myTableViewController.addFunc))
print("Hello")
fetchData()
}
func addFunc(){
let alertO = UIAlertController.init(title: "Add", message: "Add what you want", preferredStyle: .alert)
let saveAct=UIAlertAction.init(title: "Save", style: .default, handler:saveHandler)
let cancelAct=UIAlertAction.init(title: "Cancel", style: .default, handler: nil)
alertO.addAction(saveAct)
alertO.addAction(cancelAct)
alertO.addTextField(configurationHandler: { (textFD) in
textFD.placeholder="Hey therer"
print("textfd text1 is \n\n\n" ,textFD.text!)
self.tempStr=textFD.text!
})
print("textfd text2 is \n\n\n",textFD.text!)
self.present(alertO, animated: true, completion: nil)
self.tableView.reloadData()
self.tempStr=textFD.text!
}
func saveHandler(alert:UIAlertAction){
print("textfd text3 is \n\n\n",textFD.text!)
print("Value of tempStr \n\n ",tempStr)
let taskX = Tasks(context: context)
taskX.mydata = tempStr
appDelegate.saveContext()
self.tableView.reloadData()
print("Value of tempStr \n\n ",tempStr)
}
当我点击按钮时,addFunc将调用警报,并通过警报控制器调用textfield,稍后将textfield的文本存储在字符串中。无法在AlertController中添加文本字段
Alertcontroller,textfield over alert和占位符textfield出现,但当我试图将文本字段文本存储到一个字符串(tempStr) 它不能存储!
试试这个
编辑
func addFunc(){
let alert = UIAlertController(title: "MESSAGE".localized, message: "ENTER_YOUR_MESSAGE".localized, preferredStyle: .alert)
alert.addTextField { (textField) in
// textField.placeholder = "Enter your message".localized
}
alert.addAction(UIAlertAction(title: "TITLE".localized, style: .default, handler: { (action:UIAlertAction!) in
let textField = alert.textFields![0] // Force unwrapping because we know it exists.
//print("Text field: \(String(describing: textField?.text))")
if (textField.text?.characters.count)! > 0
{
self.tempStr = textField.text
}
else
{
print("empty text")
}
}))
self.present(alert, animated: true, completion: nil)
}
我试过了,但我无法存储textFD.text!在self.tempStr @Kamlesh Shingarakhiya – Paris0
@ Paris0请检查我的编辑 –
属性这个类的textFD
不是一个显示在alertO
,文本框的configurationHandler
只是提供了一个封闭,以帮助用户定制的UIAlertController文本框。
要在UIAlertController上获得textField的文本,首先需要使用UIAlertController实例的属性textFields
来获取所需的textFiled,然后使用.text
获取此textFiled的文本。
alertO.addTextField(configurationHandler: { (textFD) in
textFD.placeholder="Hey therer"
print("textfd text1 is \n\n\n" ,textFD.text!)
self.tempStr=textFD.text!
})
textfield正在初始化而没有文本(默认为空白),tempStr正在存储一个空白值。您必须在保存操作中保存字符串。
let saveAct = UIAlertAction.init(title: "Save", style: .default, handler:{
alertAction in
let textField = alertO.textFields![0] as UITextField
self.tempStr = textField.text
})
我试过你的解决方案@TroolDestroyer,但它不工作,它坠毁.. – Paris0
@ Paris0你可以描述错误,因为我已经成功实施它发布之前 –
In viewDidLoad first alloc string variable。 self.tempStr =“” – shahnilay86