Я намагаюся встановити максимум і мінімальну годину в своєму Datepicker. Мені вдалося встановити мінімум, але не можу вирішити максимум. Ось що я маю досі:
let startHour: Int = 8
let endHour: Int = 22
let date1: NSDate = NSDate()
let gregorian: NSCalendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
let components: NSDateComponents = gregorian.components(([.Day, .Month, .Year, .Hour, .Minute]), fromDate: date1)
if components.hour >= 22 && components.hour < 8 {
components.hour = startHour
components.minute = 0
components.second = 0
}
let startDate: NSDate = gregorian.dateFromComponents(components)!
components.hour = endHour
components.minute = 0
let endDate: NSDate = gregorian.dateFromComponents(components)!
picker.datePickerMode = .DateAndTime
picker.minimumDate = startDate
picker.maximumDate = endDate
picker.setDate(startDate, animated: true)
Чи є спосіб ігнорувати поточний день та місяць уметод .maximumDate (який зараз моя поточна дата)? Він встановлює мою обрану майбутню дату до поточної дати та перевіряє лише часовий інтервал, встановлений на 8 ранку до 10 вечора. Я хочу, щоб DatePicker дозволив вибрати години, починаючи з 8 ранку до 10 вечора, на кожен наступний день, а не лише на поточний день.
Відповіді:
2 для відповіді № 1Видалити picker.maximumDate = endDate
і написати свій власний метод перевірки.
// Call datePickerChanged method when the picker finishes rotating
picker.addTarget(self, action: #selector(datePickerChanged(_:)), forControlEvents: .ValueChanged)
func datePickerChanged(picker: UIDatePicker) {
let selectedDate = picker.date
// 1) if selectedDate"s hour > than your endHour (10pm)
// 2) create yourNewDate with endHour = 10pm
// 3) set new date with animation
picker.setDate(yourNewDate, animated: true)
}