任何人都可以帮助我吗?
这是我的代码:
fileprivate func datapicker(sender : UITextField){
let datePickerView:UIDatePicker = UIDatePicker()
datePickerView.datePickerMode = UIDatePickerMode.date
sender.inputView = datePickerView
datePickerView.addTarget(self, action: #selector(datePickerValueChanged(sender: datePickerView, myText: sender)), for: UIControlEvents.valueChanged)
}
@objc func datePickerValueChanged(sender:UIDatePicker , myText : UITextField) {
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = DateFormatter.Style.medium
dateFormatter.timeStyle = DateFormatter.Style.none
myText.text = dateFormatter.string(from: sender.date)
}
@IBAction func fromdateAction(_ sender: UITextField) {
datapicker(sender: sender)
}
答案 0 :(得分:0)
不能像这样调用选择器。 您无法传递选择器的参数, API 。
你必须传入:
#selector(datePickerValueChanged)
这意味着您的datePickerValueChanged
方法不能使用2个参数,因为API只需要一个。
这意味着您需要一种方法来了解哪个文本字段的日期选择器已更改。一种简单的方法是创建一个名为focusedTextField
的属性:
var focusedTextField: UITextField!
在sender
方法中将其设置为dataPicker
:
focusedTextField = sender
当用户结束编辑时将其设置为nil
// in another method that is called when the text field ends editing
focusedTextField = nil
现在,您可以从datePickerValueChanged
中移除第二个参数,然后使用focusedTextField
。