Ich habe eine UIDate Picker in eine statische TableViewCell eingebettet und im Moment habe ich den Großteil des Codes mit Ausnahme des Codes für die Datumsauswahl deaktiviert.UIDate Picker valuechanged aktualisiert die erste Drehung nicht, aber alle dreht nach .. iOS
Ich bin mit dem Date Picker als Count Down Timer
Also diese Art von allen, mit Ausnahme einiger üblichen Verkaufsstellen und Vars:
override func viewDidLoad() {
super.viewDidLoad()
// tfName.delegate = self
// tfDescription.delegate = self
//
datePicker.countDownDuration = 60
// pickerValueChanged(self)
}
@IBAction func pickerValueChanged(sender: AnyObject) {
seconds = Int(datePicker.countDownDuration)
hours = seconds/3600
if hours == 0{
minutes = seconds/60
} else{
minutes = seconds % 3600/60
}
labelDuration.text = "\(hours) hours \(minutes) minutes"
}
Das erste Mal, dass ich den Wert zu ändern des Pickers wird die Funktion "Wertänderung" überhaupt nicht ausgelöst, aber die Spins werden nach der Ausführung ohne Fehler ausgeführt.
Ich habe versucht, es in viewDidLoad
, mit pickerValueChanged(self)
und das funktioniert, aber das Problem nicht zu lösen. Auch habe ich jede Zeile Code in der pickerValueChanged
Funktion und viewDidLoad
auskommentiert, aber es hat immer noch nicht den ersten Spin ..
Vielen Dank für Ihre Zeit!
Update: Bilder hinzugefügt
Nach dem ersten Spin, ist pickerValueChanged nicht aufgerufen:
Aus der zweiten Spin und darüber hinaus, wird das Ereignis aufgerufen und das Etikett aktualisiert:
Versuchte:
Ausführung: datePicker.setDate(NSDate(), animated: true
in viewDidLoad()
löst das Problem, dass das Ereignis nicht beim ersten Dreh aufgerufen wird, aber das setzt den Ausgangszustand der Datumsauswahl auf die aktuelle Zeit. Da ich dieses Steuerelement verwende, um eine Dauer für ein Ereignis festzulegen, möchte ich es bei 0 Stunden und 1 Minute starten lassen. Dies kann mit datePicker.countDownDuration = 60
getan werden, aber danach kommt das Hauptproblem wieder zurück. Also könnte eine Lösung den DatePicker mit einem NSDate von 1 Minute einstellen, aber wie geht das?
Lösung:
var dateComp : NSDateComponents = NSDateComponents()
dateComp.hour = 0
dateComp.minute = 1
dateComp.timeZone = NSTimeZone.systemTimeZone()
var calendar : NSCalendar = NSCalendar(calendarIdentifier: NSGregorianCalendar)!
var date : NSDate = calendar.dateFromComponents(dateComp)!
datePicker.setDate(date, animated: true)
Das funktioniert, bis der DatePicker nicht verschwindet (zum Beispiel wenn ich eine Tabellenzelle habe, die es aufdeckt oder verbirgt). Wenn ich die Zelle öffne, wo der DatePicker ist, ist das Problem wieder da und selbst das Einstellen des Datums des DatePicker hilft nicht. Das ist ziemlich verrückt .... – Dareon