i'm trying to create a function using a uialertcontroller with textfield using extension uialertcontroller
this is my code :
extension UIAlertController{
class func AlertWithTextField(here: String, message1 : String) -> UIAlertController{
var alertController:UIAlertController?
alertController = UIAlertController(title: here,
message: message1,
preferredStyle: .Alert)
alertController!.addTextFieldWithConfigurationHandler(
{(textField: UITextField!) in
textField.placeholder = "Ex: 1"
textField.textAlignment = .Center
textField.delegate = self
textField.keyboardType = UIKeyboardType.NumberPad
})
let action = UIAlertAction(title: "Submit",
style: UIAlertActionStyle.Default,
handler: {[weak self]
(paramAction:UIAlertAction!) in
if let textFields = alertController?.textFields{
let theTextFields = textFields as! [UITextField]
let enteredText = theTextFields[0].text
print("\n\(enteredText)") }
})
let action2 = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: nil)
alertController?.addAction(action)
alertController?.addAction(action2)
}}
okay, i have problem with the words "self", and i can't found solution for them, what could be the solution for this problem ??
For your first self problem, i would suggest you do something like this
class func AlertWithTextField(here: String, message1 : String, delegate:UITextFieldDelegate?) -> UIAlertController{
var alertController:UIAlertController?
alertController = UIAlertController(title: here,
message: message1,
preferredStyle: .Alert)
alertController!.addTextFieldWithConfigurationHandler(
{(textField: UITextField!) in
textField.placeholder = "Ex: 1"
textField.textAlignment = .Center
textField.delegate = delegate
textField.keyboardType = UIKeyboardType.NumberPad
})
let action = UIAlertAction(title: "Submit",
style: UIAlertActionStyle.Default,
handler: {(paramAction:UIAlertAction!)->Void in
if let textFields = alertController?.textFields {
let theTextFields = textFields
let enteredText = theTextFields[0].text
print("\n\(enteredText)") }
})
let action2 = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: nil)
alertController?.addAction(action)
alertController?.addAction(action2)
return alertController!
}
You can accept a UITextFieldDelegate object in your static methods and assign it ti the delegate and for your second problem you are declaring weak self but not using it in the closure so just remove that and your code should work fine.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.