[iOS] UIDatePicker 최소, 최대 날짜 설정하기

ungchun·2022년 7월 24일
1
post-thumbnail

UIDatePicker 로 날짜를 선택하는 경우, 특정한 날짜를 선택하면 안되는 경우가 있다. 예를 들어 오늘 기준 미래의 날짜를 선택하면 안되거나 과거 특정한 날 이상을 벗어나면 안되는 경우 등 다양한 경우의 수가 존재한다. 이럴때 UIDatePicker 에 선택할 수 있는 날짜의 범위를 지정해 줄 수 있다. 그 방법을 한번 정리해보려한다.

private let datePicker: UIDatePicker = {
	let datePicker = UIDatePicker()
	datePicker.preferredDatePickerStyle = .wheels
	datePicker.datePickerMode = .date
	datePicker.locale = Locale(identifier: "ko-KR")
	datePicker.frame.size = CGSize(width: 0, height: 250)

	let calendar = Calendar(identifier: .gregorian)
	let currentDate = Date()
	var components = DateComponents()
	components.calendar = calendar

	// datePicker max 날짜 세팅 -> 오늘 날짜 에서
	//
	components.year = -1
	components.month = 12
	let maxDate = calendar.date(byAdding: components, to: currentDate)!

	// datePicker min 날짜 세팅 -> 30년 전 까지
	//
	components.year = -31
	let minDate = calendar.date(byAdding: components, to: currentDate)!

	datePicker.minimumDate = minDate
	datePicker.maximumDate = maxDate

	return datePicker
}()

방법은 상당히 간단하다. 중요한 부분은 min 날짜와 max 날짜인데 min year, month와 max year, month의 날짜를 설정해서 datePicker에 세팅해주면 된다. 나의 경우에 과거 30년 전부터 오늘 까지 범위를 설정을 했다. 본인의 datePicker 에서 min 날짜와 max 날짜만 세팅을 해주면 될 것 같다.

이렇게 하면 설정한 범위를 벗어나는 date는 선택을 할 수 없게 된다.

0개의 댓글