我正在使用UIAlertController获得这样的名称变量;
在android中,当警报控制器弹出时,我的朋友可以将变量放入警报控制器;
他们可以将变量放在文本字段中并以它开头。
但是我不能,我试图
alertController.textFields?.first?.text = myNameVariable
但是没有用。
let alertController = UIAlertController(title: "Update Name", message: nil, preferredStyle: .alert)
let confirmAction = UIAlertAction(title: "Update", style: .default) { (_) in
if let txtField = alertController.textFields?.first, let text = txtField.text {
// operations
alertController.textFields?.first?.text = "Variable that i already have" // I want to change textfield content
print("Text==>" + text)
}
}
let cancelAction = UIAlertAction(title: "Cancel", style: .cancel) { (_) in }
alertController.addTextField { (textField) in
textField.placeholder = "name"
}
alertController.addAction(confirmAction)
alertController.addAction(cancelAction)
self.present(alertController, animated: true, completion: nil)
}))
很抱歉,我上载Imgur的国家/地区禁止上传IBB而不是Imgur:/
答案 0 :(得分:-1)
您需要先添加文本字段,然后才能访问它
这是一个例子
let alertController = UIAlertController(title: "Update Name", message: nil, preferredStyle: .alert)
alertController.addTextField { textField in
textField.text = "Text goes here 1"
textField.placeholder = "placeholder"
textField.tag = 0
}
alertController.addTextField { textField in
textField.text = "Text goes here 2"
textField.tag = 1
}
alertController.addAction(UIAlertAction(title: "Ok", style: .default, handler: { _ in
let firstTextField = alertController.textFields?.first
let secondTextField = alertController.textFields?.last
print(firstTextField?.text, secondTextField?.text)
}))
修改
感谢@rmaddy
问题代码的问题在于,它在试图消除警报后试图设置文本字段的文本。这毫无意义。一旦用户点击警告按钮之一,则该用户已经在文本字段中输入了文本。该代码应尝试从文本字段读取用户输入的文本,而不是尝试更新文本字段的文本。