ios Swift 2:扩展 - 带有文本字段的警报
Posted
技术标签:
【中文标题】ios Swift 2:扩展 - 带有文本字段的警报【英文标题】:ios Swift 2: extension - Alert with textfield 【发布时间】:2016-09-01 09:54:24 【问题描述】:我正在尝试使用带有扩展名 uialertcontroller 的文本字段的 uialertcontroller 创建一个函数
这是我的代码:
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)
好的,我对“self”这个词有疑问,我找不到解决方案,请问有什么办法可以解决这个问题??
【问题讨论】:
我已经问过这个问题了。你可以在这里找到它:***.com/questions/26567413/…。 :) 【参考方案1】:对于你的第一个自我问题,我建议你做这样的事情
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!
您可以在静态方法中接受 UITextFieldDelegate 对象并将其分配给委托,对于您的第二个问题,您声明弱自我但不在闭包中使用它,因此只需删除它,您的代码应该可以正常工作。
【讨论】:
以上是关于ios Swift 2:扩展 - 带有文本字段的警报的主要内容,如果未能解决你的问题,请参考以下文章
如何在swift3 ios中使用键盘返回键将一个文本字段移动到另一个文本字段
点击文本字段时用选择器视图替换键盘(Swift、Storyboard、iOS 9、Xcode 7)