/ / SWIFT 2.2 Мінімальна та максимальна кількість годин у DatePicker - швидкий вибір, дата вибору, година

SWIFT 2.2 Мінімальний і максимальний HOUR в DatePicker - swift, datepicker, година

Я намагаюся встановити максимум і мінімальну годину в своєму 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)
}