'#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