web-dev-qa-db-ja.com

UIDatePickerで将来の日付、月、年を無効にする方法は?

ユーザーが誕生日の過去と現在の年のみを選択するために、UIDatePickerで将来の日付を非表示にする方法。

多くのソースを検索しましたが、希望する結果が得られません。

これが私のコードです、

 dateofBirthDatePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0.0, 44.0, 0.0, 0.0)];

    dateofBirthDatePicker.datePickerMode = UIDatePickerModeDate;
    [dateofBirthDatePicker setBackgroundColor:DATE_PICKER_GRAY_COLOR];

//    UILabel *label = [UILabel appearanceWhenContainedIn:[UITableView class],[UIDatePicker class], nil];
//    label.font = HELVETICA_NEUE(24);
//    label.textColor = GREEN_COLOR;
    [dateofBirthDatePicker addTarget:self
                              action:@selector(LabelChange:)
                    forControlEvents:UIControlEventValueChanged];
    dateofbirthTextField.inputView = dateofBirthDatePicker;
    [self datePickerToolBar];
}

- (void)LabelChange:(id)sender
{
    NSDateFormatter *dateFormat= [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"dd/MM/yyyy"];
    dateofbirthTextField.text = [NSString stringWithFormat:@"%@",
                                [dateFormat stringFromDate:dateofBirthDatePicker.date]];
}

解決策を知っている人がいれば、親切に提案してください。本当にありがとうございました。

20
Ram

以下は、将来の日付選択を防ぐための簡単なコードです。

dateofBirthDatePicker.maximumDate=[NSDate date];
46
Mawoon

Swift 2:

self.datePicker.maximumDate = NSDate()

Swift 3:

self.datePicker.maximumDate = Date()

11
Phil Hudson

In Swift 4.0.3 Xcode 9

将来の日付を非表示

self.picker.maximumDate = Date()
3
Keshav Gera

UIDatePickerオブジェクトでsetMaximumDate:およびsetMinimumDate:を使用できます。

[dateofBirthDatePicker setMaximumDate:[NSDate date]]; // The max date will be today

// Optional you can set up min date as well
[dateofBirthDatePicker setMinimumDate:yourMinDate];
2
Greg
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *currentDate = [NSDate date];
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setYear:1];
NSDate *maxDate = [calendar dateByAddingComponents:comps toDate:currentDate options:0];
[comps setYear:-30];
NSDate *minDate = [calendar dateByAddingComponents:comps toDate:currentDate options:0];

[datePicker setMaximumDate:maxDate];
[datePicker setMinimumDate:minDate];
0
Pancho