我已经阅读了许多教程甚至 Apple 官方文档,并且一定不明白这段代码有什么问题。
var dueDatePicker = UIDatePicker()
@IBOutlet weak var textField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
textField.inputView = dueDatePicker
dueDatePicker.addTarget(self, action: #selector(datePickerValueChanged(_:)), for: UIControlEvents.valueChanged)
}
func datePickerValueChanged(_ sender: UIDatePicker){
//Do Stuff
}
在运行时,我单击 textField 并出现 UIDatePicker。选择器指向的函数被执行。一旦我单击 UIDatePicker 之外的 UI 对象,应用程序就会崩溃并出现以下错误:
由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[YourApp.PromiseViewController dueDateChanged:]:无法识别的选择器发送到实例 0x100b12ae0”
我不明白的是,最初识别出“选择器”或指向所需函数的指针。但是,当我从另一个 UI 对象触发另一个事件时,会引发此异常。
为什么会这样?
datePickerValueChanged()
最初调用时不应该触发此异常吗?