【发布时间】:2018-05-18 17:09:28
【问题描述】:
在 Swift 3 中使用选取器视图时,文本字段委托方法 textFieldDidEndEditing 未触发。我该如何调用它?没有动态调用委托的按钮。
你可以在下面看到我的代码。
import UIKit
class ThroewViewController: UIViewController,UIPickerViewDelegate,UIPickerViewDataSource,UITextFieldDelegate {
@IBOutlet weak var pickerText: UITextField!
let thePicker = UIPickerView()
var dashTitle_Arr = ["One","Two","Three","Four","Five","Six"]
override func viewDidLoad() {
super.viewDidLoad()
pickerText.delegate = self
thePicker.dataSource = self
thePicker.delegate = self
pickerText.inputView = thePicker
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return dashTitle_Arr .count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return dashTitle_Arr [row] }
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
pickerText.text = dashTitle_Arr [row]
}
func textFieldDidEndEditing(_ textField: UITextField) {
addIntoArray(text: textField.text)
}
func addIntoArray(text: String?) {
guard let text = text, text.characters.count > 0 else {
return
}
dashTitle_Arr.append(text)
thePicker.reloadAllComponents()
}
}
【问题讨论】:
-
在didSelectRow委托方法中,可以强制结束对textField的编辑,只需在该方法中添加一行:pickerText.resignFirstResponder。
-
实际上我需要将字符串附加到需要保存在该数组中但它不起作用的数组对象
-
您必须将该行放在 pickerText.text = dashTitle_Arr [row] this line 之后。还是行不通 ?告诉我
标签: ios swift3 delegates uitextfield uipickerview