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

时间:2016-09-04 13:15:18

标签: ios swift xcode unrecognized-selector

我是斯威夫特的新手。我正在使用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显示正常,但是当我开始滚动日期时,它会给我以下错误:

  

***由于未捕获的异常终止应用程序' NSInvalidArgumentException',原因:' - [MyApp.ViewController datePickerChanged:]:无法识别的选择器发送到实例0x7f90f1f04180'

2 个答案:

答案 0 :(得分:4)

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

此外,不需要结尾处的冒号。

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

datePicker.addTarget(self, action: #selector(datePickerChanged), 
    for: .valueChanged)

答案 1 :(得分:-1)

  1. Selector更改为#selector
  2. for更改为forControlEvents
  3. .valueChanged更改为.ValueChanged

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