2016-04-09 12 views
0

Ich habe mehrere UITextField und einige von ihnen verwenden den 'UIDatePicker'. Wie kann ich den Wert vom UIDatePicker zurückgeben, ohne textField.text = formatter.stringFromDate(datePicker.date) in der datePickerChanged Funktion zu codieren?Rückgabewert von UIDatePicker, wenn mehrere UITextFields vorhanden sind

func textFieldDidBeginEditing(textField: UITextField) { 
    switch textField.tag { 

     //tag = 3 is the text field that needs the date 
    case 3: 
     let datePicker = UIDatePicker() 
     textField.inputView = datePicker 
     datePicker.addTarget(self, action: "datePickerChanged:", forControlEvents: .ValueChanged) 
     //textField.text = value returned from datePickerChanged 
    default: break 
    } 
} 

func datePickerChanged(datePicker: UIDatePicker) { 
    let formatter = NSDateFormatter() 
    formatter.dateStyle = .MediumStyle 
    let dateTextValue = formatter.stringFromDate(datePicker.date) 
    // how can I return (dateTextValue)? 
} 

Antwort

1

Sie könnten eine Variable erstellen currentTextField genannt, und in Ihrer Erklärung Fall textField-currentTextField zuweisen. Dann könnte Ihre datePickerChanged (_ :) -Funktion currentTextField verwenden, um das Datum einzustellen.

+0

Danke für die Antwort. Hmm okay, wie soll ich das 'currentTextField' initialisieren? Vielleicht verstehe ich nicht ganz – Sami

+1

@Sami, 'var currentTextField: UITextField?' Das initialisiert currentTextField auf Null. Whoops - es sollte kein @IBOutlet sein. – 7stud

+0

Sie können die Variable sogar als implizit unwrapped optional deklarieren: 'var currentTextField: UITextField!', Was den Umgang mit der Variable erleichtert. – 7stud