Как отключить определенные дни в UIDatePicker - PullRequest
0 голосов
/ 02 мая 2018

У меня есть UIDatePicker, который должен показывать только определенные дни, как все воскресенья и понедельники, и отключать все другие даты. Пользователь может выбрать только воскресенье и понедельник с этой недели, следующей недели, недели после, до, давайте скажем, 2020.

Это возможно даже с UIDatePicker или даже с любым пользовательским элементом управления?

Ответы [ 3 ]

0 голосов
/ 02 мая 2018

Я бы предложил вам использовать вот так:

Ниже кода вы получите даты всех воскресений с 2016-2018 ,

let cal = Calendar.current
// Get the date of 2 years ago today
let stopDate = cal.date(byAdding: .year, value: -2, to: Date())!

// We want to find dates that match on Sundays at midnight local time
var comps = DateComponents()
comps.weekday = 1 // Sunday

// Enumerate all of the dates
cal.enumerateDates(startingAfter: Date(), matching: comps, matchingPolicy: .previousTimePreservingSmallerComponents, repeatedTimePolicy: .first, direction: .backward) { (date, match, stop) in
    if let date = date {
        if date < stopDate {
            stop = true // We've reached the end, exit the loop
        } else {
            print("\(date)") // do what you need with the date
        }
    }
}

Логика проста. Сделайте массив из этого в вашем необходимом dateFormat и покажите, что в pickerView, который в конечном итоге будет работать как datePicker для вас.

Надеюсь, это поможет.

0 голосов
/ 17 января 2019

Есть способ сделать это только с помощью UIDatePicker!

Допустим, у вас есть minTime, то есть January 16 10:00AM

Вы бы сделали что-то вроде этого:

let picker = UIDatePicker()
picker.minimumDate = minTime
picker.maximumDate = minTime.changing(.hour, value: 23).changing(.minute, value: 59)

Тогда сборщик застрянет на этой дате. Надеюсь, это кому-нибудь поможет!

0 голосов
/ 02 мая 2018

Это невозможно. Вы должны создать пользовательский инструмент выбора даты на основе UIPickerView.

...