Mam UIDate Picker osadzony w statycznym TableViewCell i w tej chwili wyłączyłem większość kodu, z wyjątkiem kodu odpowiedzialnego za selektora daty.UIDate Picker valueechanged nie aktualizuje pierwszego wirowania, ale robi każdy spin po .. iOS
Używam Date Picker jako odliczanie timera
więc to niby wszystko, z wyjątkiem niektórych zwykłych punktach i 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"
}
Pierwszy raz zmieniłyby wartość z selektora, zmieniona wartość nie uruchamia się wcale, ale spiny po niej nie kończą się niepowodzeniem.
Próbowałem wywołać to w viewDidLoad
, z pickerValueChanged(self)
i działa, ale nie rozwiązuje problemu. Poza tym skomentowałem każdą linię kodu w funkcji pickerValueChanged
i viewDidLoad
, ale nadal nie uruchomiłem pierwszego obrotu.
Dziękuję za poświęcony czas!
Aktualizacja: Dodano zdjęcia
Po pierwszym spinie, pickerValueChanged nie sprawdzony:
Z drugiej spinu i poza nią, zdarzenie zostanie wywołany, a etykieta jest aktualizowany:
Tried:
Wykonywanie: datePicker.setDate(NSDate(), animated: true
w viewDidLoad()
rozwiązuje problem polegający na tym, że zdarzenie nie zostaje wywołane przy pierwszym obrocie, ale powoduje ustawienie początkowego stanu Selektora dat na bieżący czas. Ponieważ używam tej kontrolki, aby ustawić czas trwania zdarzenia, chcę pozwolić, aby zaczął od 0 godzin i 1 minuty. Można to zrobić za pomocą datePicker.countDownDuration = 60
, ale po tym problem główny znów się pojawia. Rozwiązaniem może być ustawienie DatePicker z NSDate na 1 minutę, ale jak to zrobić?
Rozwiązanie:
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)
To działa, dopóki DatePicker nie zniknie (na przykład, jeśli mam komórkę tabeli, która ją odkrywa lub ukrywa). Jeśli otworzę komórkę, w której znajduje się DatePicker, problem pojawi się ponownie i nawet ustawienie Date of DatePicker nie pomoże. To całkiem szalone ... – Dareon