Koh*_*yer 10 uidatepicker uiview ios swift swift4
我已经阅读了很多教程甚至是官方的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
}
Run Code Online (Sandbox Code Playgroud)
在运行时,我单击textField并显示UIDatePicker.执行选择器指向的功能.只要我点击UIDatePicker之外的UI对象,应用程序就会崩溃并显示以下错误:
由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' - [YourApp.PromiseViewController dueDateChanged:]:无法识别的选择器发送到实例0x100b12ae0'
我不明白的是,最初识别"选择器"或指向所需功能的指针.但是,当我从另一个UI对象触发另一个事件时,抛出此异常.
为什么会这样?
datePickerValueChanged()
最初调用时不应触发此异常吗?
只需在功能前添加@objc即可
@objc func datePickerValueChanged(_ sender: UIDatePicker){
//Do Stuff
}
Run Code Online (Sandbox Code Playgroud)
该错误告诉您已将选择器的操作dueDateChanged(_:)
添加为目标操作.
可以向控件添加多个目标操作.某处,也许在你的故事板或xib中,你还有另外一个动作dueDatePicker
.