Swift 2.0, проверка максимальной даты DatePicker

Предположим, что сегодняшняя дата 16 мая 2016 года, я хочу ограничить пользователя отображением даты до 16 июня 2016 года.


person Nisha Nair    schedule 16.05.2016    source источник
comment
используйте свойство maxDate представления выбора.   -  person Sahil    schedule 16.05.2016
comment
Установите датупикер maximumDate   -  person Bhavin Ramani    schedule 16.05.2016
comment
Пожелание: сегодня действительно 16 мая 2016 года, поэтому Swift 2.0 больше никто не использует. текущая актуальная версия 2.2.1, поэтому, пожалуйста, просто напишите Swift 2 :)   -  person FreeNickname    schedule 16.05.2016


Ответы (5)


Редактировать

Свифт 3

    let datePicker = UIDatePicker()
    datePicker.maximumDate = Date()

быстро 2

    let datePicker = UIDatePicker()
    datePicker.maximumDate = NSDate()

Ограничить пользователя определенным интервалом времени

Попробуйте это: пользователь ограничит выбор даты более чем на один месяц с текущей даты.

let datePicker = UIDatePicker()
let secondsInMonth: NSTimeInterval = 30 * 24 * 60 * 60
datePicker.maximumDate = NSDate(timeInterval: secondsInMonth, sinceDate: NSDate())
person AkBombe    schedule 16.05.2016

В Swift 2.0 используйте свойство maxDate для решения вашей проблемы.

Вы можете использовать такой код..

let datePicker = UIDatePicker()
datePicker.maximumDate = NSDate()
person Himanshu    schedule 16.05.2016

установите свойство maximumDate для UIDatePicker.

person Surjeet Rajput    schedule 16.05.2016

Вы можете установить как максимальную дату, так и минимальную дату программно.

Используйте следующий код для iOS 8+

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDate *currentDate = [NSDate date];
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setMonth:1];
NSDate *maxDate = [calendar dateByAddingComponents:comps toDate:currentDate options:0];

/* Optional for your case */
[comps setYear:-30];
NSDate *minDate = [calendar dateByAddingComponents:comps toDate:currentDate options:0];

[datePicker setMaximumDate:maxDate];
[datePicker setMinimumDate:minDate]
person NSPratik    schedule 16.05.2016
comment
Это точно не Swift 2.0 - person William GP; 16.05.2016

Логика такова, предположим, что сегодня 16 мая 2016 года, и вы хотите добавить 30 дней, тогда приведенная ниже логика будет вам полезна.

 // Initialize stringified date presentation
var myStringDate: String = "2016-05-16"
    // How much day to add
var addDaysCount: Int = 30
    // Creating and configuring date formatter instance
var dateFormatter: NSDateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
    // Retrieve NSDate instance from stringified date presentation
var dateFromString: NSDate = dateFormatter.dateFromString(myStringDate)
    // Create and initialize date component instance
var dateComponents: NSDateComponents = NSDateComponents()
dateComponents.day = addDaysCount
    // Retrieve date with increased days count
var newDate: NSDate = NSCalendar.currentCalendar().dateByAddingComponents(dateComponents, toDate: dateFromString, options: 0)
NSLog("Original date: %@", dateFormatter.stringFromDate(dateFromString))
NSLog("New date: %@", dateFormatter.stringFromDate(newDate))
// Clean up
dateComponents, dateComponents = nil
dateFormatter, dateFormatter = nil

Новая дата, которую вы получаете, может быть установлена ​​в UIDatePicker.

person iAnkit    schedule 16.05.2016