【发布时间】:2017-06-22 01:41:47
【问题描述】:
我已经阅读了很多教程,甚至苹果官方文档,一定不明白这段代码有什么问题。
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()时不应该触发这个异常吗?
【问题讨论】:
标签: ios swift uiview uidatepicker swift4