2016-07-06 10 views
0

Ich versuche, den Benutzer ein Datum auszuwählen und in einem Textfeld anzeigen zu lassen. Ich habe so viele Antworten online gefunden, aber keiner von ihnen scheint zu funktionieren. Ich tue nicht, wenn sie veraltet sind. Ich erhalte einen Fehler bei "datePickerView.addTarget" im Auswahlbereich. Wenn ich die App starte, tippe ich auf das Textfeld und die Tastatur erscheint, was ich möchte. Aber die App stürzt ab, sobald ich das Datum ändere.DatePicker in TextField-Probleme eingeben

Jede Hilfe würde wirklich geschätzt werden!

@IBAction func dateFieldEditing(sender: UITextField) { 

    let datePickerView:UIDatePicker = UIDatePicker() 

    datePickerView.datePickerMode = UIDatePickerMode.Date 

    sender.inputView = datePickerView 

    datePickerView.addTarget(self, action:Selector("handleDatePicker"),forControlEvents: UIControlEvents.ValueChanged) 

} 


func handleDatePicker (sender: UIDatePicker){ 

    let formatter = NSDateFormatter() 
    formatter.dateStyle = .LongStyle 
    dateField.text = formatter.stringFromDate(sender.date) 
} 
+0

Sie Syntax ist ein wenig veraltet. Dein Code ist meistens in Ordnung, aber er sollte 'datePickerView.addTarget (self, action: #selector (self.handleDatePicker), forControlEvents: UIControlEvents.ValueChanged)' Das ist '#selector (....)' Nicht sicher, warum der Compiler dies tut beschwere dich nicht. – beyowulf

+0

@beyowulf Perfekt !! Es funktionierte. Danke vielmals. –

Antwort

0

Die folgenden Arbeiten unter der Annahme, dass Sie ein UITextField und UIDatePicker als IBOutlets über Interface Builder gebunden haben. Das Einstellen von sender.inputView war unnötig.

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet weak var datePicker: UIDatePicker? 
    @IBOutlet weak var textField: UITextField? 

    func handleDatePicker (sender: UIDatePicker) { 
     let formatter = NSDateFormatter() 
     formatter.dateStyle = .LongStyle 
     textField!.text = formatter.stringFromDate(sender.date) 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.datePicker!.datePickerMode = UIDatePickerMode.Date 
     datePicker!.addTarget(self, action:#selector(handleDatePicker(_:)), forControlEvents: UIControlEvents.ValueChanged) 
    } 
}