如何在swift中正确使用选择器4
问题描述:
我已经阅读了许多教程,甚至是官方的Apple文档,并且不知道这段代码有什么问题。如何在swift中正确使用选择器4
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对象很快,应用程序崩溃,与此错误:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[YourApp.PromiseViewController dueDateChanged:]: unrecognized selector sent to instance 0x100b12ae0'
我不明白的是,“选择”或指针所需要的功能初始确认。但是,当我从另一个UI对象触发另一个事件时,会引发此异常。
这是怎么发生的?
最初调用datePickerValueChanged()
时不应该触发此异常吗?
答
错误提示您已将选择器dueDateChanged(_:)
的操作添加为目标操作。
可以向控件添加多个目标操作。在某个地方,也许在您的故事板或xib中,您有另一个动作添加到dueDatePicker
。
我不能相信我没有看到这一点。非常感谢。我开始怀疑我存在的逻辑。干杯! –