Как избежать выбора пользователем какой-либо даты в UIDatePicker? - PullRequest
0 голосов
/ 03 июля 2010

Я должен предложить пользователям выбрать дату в CoCoa UIDatePicker, но избегать выбора воскресенья и субботы, поскольку моя цель - заставить их выбрать дату для встречи

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

1 Ответ

3 голосов
/ 03 июля 2010

Вы можете сделать что-то вроде этого:

UIDatePicker *datePicker = [[UIDatePicker alloc] init];
[datePicker addTarget:self action:@selector(dateChanged:) forControlEvent:UIControlEventValueChanged];

Реализация для dateChanged:

- (void)dateChanged:(id)sender {
  UIDatePicker *datePicker = (UIDatePicker *)sender;
  NSDate *pickedDate = datePicker.date;

  NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
  NSDateComponents *weekdayComponents = [gregorian components:NSWeekdayCalendarUnit fromDate:pickedDate];
  NSInteger weekday = [weekdayComponents weekday];
  [gregorian release];

  if (weekday == 1 || weekday == 7) { // Sunday or Saturday
    NSDate *nextMonday = nil;
    if (weekday == 1)
      nextMonday = [pickedDate dateByAddingTimeInterval:24 * 60 * 60]; // Add 24 hours
    else
      nextMonday = [pickedDate dateByAddingTimeInterval:2 * 24 * 60 * 60]; // Add two days

    [datePicker setDate:nextMonday animated:YES];

    return;
  }

  // Do something else if the picked date was NOT on Saturday or Sunday.
}

Таким образом, когда выбирается дата в субботу или воскресенье, средство выбора даты автоматически выбирает понедельник после выходных.

(код не проверен!)

...