'#selector' 的参数不引用
Argument of '#selector' does not refer
谁能帮帮我?
这是我的代码:
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)
}
不能这样调用选择器。 你 不能为选择器传递参数,API 可以。
你必须传入:
#selector(datePickerValueChanged)
这意味着您的 datePickerValueChanged
方法不能接受 2 个参数,因为 API 只需要一个。
这意味着您需要一种方法来了解更改了哪个文本字段的日期选择器。一种简单的方法是创建一个名为 focusedTextField
:
的 属性
var focusedTextField: UITextField!
在您的 dataPicker
方法中将其设置为 sender
:
focusedTextField = sender
并在用户结束编辑时设置为nil
// in another method that is called when the text field ends editing
focusedTextField = nil
现在,您可以从 datePickerValueChanged
中删除第二个参数并改用 focusedTextField
。
谁能帮帮我?
这是我的代码:
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)
}
不能这样调用选择器。 你 不能为选择器传递参数,API 可以。
你必须传入:
#selector(datePickerValueChanged)
这意味着您的 datePickerValueChanged
方法不能接受 2 个参数,因为 API 只需要一个。
这意味着您需要一种方法来了解更改了哪个文本字段的日期选择器。一种简单的方法是创建一个名为 focusedTextField
:
var focusedTextField: UITextField!
在您的 dataPicker
方法中将其设置为 sender
:
focusedTextField = sender
并在用户结束编辑时设置为nil
// in another method that is called when the text field ends editing
focusedTextField = nil
现在,您可以从 datePickerValueChanged
中删除第二个参数并改用 focusedTextField
。