2016-11-15 5 views
2

Я использую Xcode 8.0 и здание на 10 прошивкой с Swift 3.UIDatePicker мин и макс дата не меняется

меня UIDatePicker в моем контроллере представления, связанные как отдушина:

@IBOutlet weak var datePicker: UIDatePicker! 

I Я пытаюсь установить для него максимальные и минимальные даты. Код, который я использую:

self.datePicker.minimumDate = Date() 
self.datePicker.maximumDate = Date(timeIntervalSinceNow: 60*60*24*365) 
self.datePicker.datePickerMode = UIDatePickerMode.date 

не работает - выбор даты может идти бесконечно назад и вперед во времени.

Вопрос: что мне здесь не хватает?

+0

Где вы задаете эти ограничения? ('init',' viewDidLoad' и т. д.) – NSDmitry

ответ

0

Я, к сожалению, пережил такую ​​же проблему буквально вчера, и после поиска SO не смог найти решение. Я придумал свою собственную реализацию max/min date для использования вместо встроенного в один, это не идеально, но он работает.

func datePickerDidChangeDate(sender: UIDatePicker) { 
    let maxDate = Date(timeIntervalSinceNow: 60*60*24*365) 
    let minDate = Date() 

    if sender.date.compare(minDate) == .orderedAscending || sender.date.compare(maxDate) == .orderedDescending { 
     // Date is invalid 
     sender.setDate(Date()) // Set selected date to now. 
     return 
    } 
} 

Также обратите внимание, делая все 60*60*24*365 это плохая идея, и вы должны использовать NSCalendar.dateByAddingComponents, но это совершенно другой вопрос в целом.

Смежные вопросы