我用斯威夫特3.我試圖創建一個領域,顯示了一個帳戶創建形式學習上的Xcode 8.3.3和iOS 10.3 iOS開發當用戶上誕生的UITextField的日期觸上執行一個的UIDatePicker:「 - [最新的UITextField]:無法識別的選擇發送到實例0x7f89277121c0」
@IBAction func showDatePicker(_ sender: UITextField) {
let datePicker = UIDatePicker()
datePicker.datePickerMode = UIDatePickerMode.date
datePicker.maximumDate = Calendar.current.date(byAdding: .year, value: -16, to: Date())
dateOfBirth.inputView = datePicker
datePicker.addTarget(self, action: #selector(self.datePickerValueChanged), for: UIControlEvents.valueChanged)
}
@objc func datePickerValueChanged(_ picker: UIDatePicker) {
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = DateFormatter.Style.medium
dateFormatter.timeStyle = DateFormatter.Style.none
dateOfBirth.text = dateFormatter.string(from: picker.date)
}
當我執行上面的,我得到的錯誤:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITextField date]: unrecognized selector sent to instance 0x7f89277121c0'
對我來說,它看起來像它試圖注入將UITextField的「發送者」值放入datePickerValueChanged字段中,該字段應該是t ake類型UIDatePicker的值,從而導致錯誤。我試圖將其更改爲我明確地傳遞的日期選擇對象的datePickerValueChanged方法:
datePicker.addTarget(self, action: #selector(self.datePickerValueChanged(datePicker)), for: UIControlEvents.valueChanged)
但隨後的Xcode給了我一個錯誤:
Argument of '#selector' does not refer to an '@objc' method, property, or initializer
我的函數在它前面的@objc ,所以我很困惑爲什麼它不允許。
所以,我最終的問題是:如何確保傳遞給datePickerValueChanged值類型的UIDatePicker,即日期選擇器對象?
您是否嘗試過清理或重建項目? – QPDev
當日期選取器第一次出現或在選取器中選擇日期時,是否發生此錯誤? –
我試過清洗,但仍然失敗。此外,這發生在日期選擇器甚至顯示之前。 – user1011376