2016-11-15 56 views
2

我使用的Xcode 8.0和建筑在iOS 10夫特3.的UIDatePicker min和max日期不改变

我的UIDatePicker在我的视图控制器,连接作为一个出口:

@IBOutlet weak var datePicker: UIDatePicker! 

我试图为它设置最大和最小日期。我正在使用的代码:

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

不工作 - 日期选择器可以无限地前后移动。

问题是 - 我在这里错过了什么?

+0

你在哪里设置这些限制? ('init','viewDidLoad'等) – NSDmitry

回答

0

我不幸昨天在字面上遭受了同样的问题,搜索后找不到解决方案。我想出了自己的最大/最小日期实现来代替内置的日期,这不是理想的,但它的工作原理。

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但这是一个完全不同的问题完全。