Ich lerne iOS-Entwicklung auf Xcode 8.3.3 und iOS 10.3 mit Swift 3. Ich versuche, ein Kontoerstellungsformular mit einem Feld zu erstellen, das zeigt ein UIDatePicker, wenn der Benutzer ein auf touchup am Tag der Geburt UITextField führt:'- [UITextField date]: unerkannter Selektor gesendet an Instanz 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)
}
wenn ich die oben ausführen, ich den Fehler:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITextField date]: unrecognized selector sent to instance 0x7f89277121c0'
für mich sieht es aus wie seine zu injizieren versucht der UITextField 'sender' Wert in das datePickerValueChanged Feld, welches t sein soll ake einen Wert vom Typ UIDatePicker, wodurch der Fehler verursacht wird. Ich habe versucht, es zu ändern, wo ich die Datepicker Objekt an die datePickerValueChanged Methode explizit übergeben:
datePicker.addTarget(self, action: #selector(self.datePickerValueChanged(datePicker)), for: UIControlEvents.valueChanged)
aber Xcode gibt mir dann einen Fehler:
Argument of '#selector' does not refer to an '@objc' method, property, or initializer
Meine Funktion die @objc vor ihm hat Ich bin verwirrt, warum es das nicht erlaubt.
Also, meine letzte Frage ist: Wie kann ich sicherstellen, dass der Wert auf datePickerValueChanged bestanden vom Typ UIDatePicker ist, das heißt, das picker Objekt?
Haben Sie versucht, die Reinigung oder das Projekt Wiederaufbau? – QPDev
Tritt dieser Fehler auf, wenn die Datumsauswahl zum ersten Mal erscheint oder wenn Sie ein Datum in der Auswahl auswählen? –
Ich habe versucht zu reinigen, aber es schlägt immer noch fehl. Dies geschieht auch, bevor die Datumsauswahl angezeigt wird. – user1011376