无法识别的选择器发送到实例 0x7f90f1f04180

unrecognized selector sent to instance 0x7f90f1f04180

我是 swift 的新手。我正在使用 xcode 版本 8 beta 4。每当我滚动日期选择器时,我都会遇到错误。我读过 very similar problem,但那里的答案并没有解决我的问题。下面是我的代码:

func textFieldDidBeginEditing(_ textField: UITextField) {
    let datePicker = UIDatePicker()
    textField.inputView = datePicker
    datePicker.addTarget(self, action: Selector("datePickerChanged:"), for: .valueChanged)        
}

func datePickerChanged(sender: UIDatePicker){
    let formatter = DateFormatter()
    formatter.dateStyle = .long
    dateLog.text = formatter.string(from: sender.date)
}

当我点击我的文本字段时,UIDatePicker 显示得很好,但是当我开始滚动日期时,出现以下错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[MyApp.ViewController datePickerChanged:]: unrecognized selector sent to instance 0x7f90f1f04180'

Selector(String) 已弃用。您应该开始使用新语法 #selector.

此外,不需要末尾的冒号。

因此,您的代码应如下所示:

datePicker.addTarget(self, action: #selector(datePickerChanged), 
    for: .valueChanged)
  1. Selector 更改为 #selector
  2. for 更改为 forControlEvents
  3. .valueChanged更改为.ValueChanged

    datePicker.addTarget(self, action: #selector(yourClass.datePickerChanged), forControlEvents: .ValueChanged)