반응형
UIDatePicker를 사용하여 날짜를 선택하는 방법을 알아보자. 먼저 아래 사진과 같이 빈 화면에 하나의 텍스트 필드를 만들었다. 이제 저 텍스트 필드를 선택했을 때 날짜를 선택할 수 있는 창이 뜨도록 구현해보자.
먼저 뷰 컨트롤러에 텍스트 필드와 연결된 outlet 변수를 만들었고 UIDatePicker 객체의 인스턴스에 해당하는 프로퍼티와 datePicker에서 선택한 날짜를 담아줄 Date형 프로퍼티를 만들었다.
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var dateTextField: UITextField!
private let datePicker = UIDatePicker()
private var date: Date? // datePicker에서 선택한 date를 저장하는 프로퍼티
override func viewDidLoad() {
super.viewDidLoad()
}
}
datePicker를 설정하기에 앞서 사용할 프로퍼티는 다음과 같다.
- datePickerMode : Date Picker의 모드를 설정한다. .time, .date, .dateAndTime, .countDownTimer등이 있다.
- preferredDatePickerStyle : Date Picker의 스타일을 설정한다.
- locale : Date Picker의 locale 설정
- addTarget(_: action: for:) : 컨트롤에 타겟이 되는 객체와 action 메서드를 연결한다.
- target : 작업 메서드가 호출되는 객체이다.
- action : 호출할 작업 메서드. action 파라미터는 nil이 될 수 없다.
- controlEvents : 지정된 이벤트에 따라서 action 메서드가 호출된다.
작성된 코드는 다음과 같다.
import UIKit
class ViewController: UIViewController {
...
private func configureDatePicker() {
// datePicker의 모드로 .date 설정
self.datePicker.datePickerMode = .date
// datePicker의 style을 wheels로 설정
self.datePicker.preferredDatePickerStyle = .wheels
// 값이 바뀔때마다 datePickerValueDidChange 호출
self.datePicker.addTarget(self, action: #selector(datePickerValueDidChange(_:)), for: .valueChanged)
// locale을 한국으로 설정한다.
self.datePicker.locale = Locale(identifier: "ko_KR")
// dateTextField를 선택했을 때 키보드가 아닌 날짜 선택 창이 뜨도록
self.dateTextField.inputView = self.datePicker
}
// datePicker.addTarget의 selector에 지정된 메서드
@objc private func datePickerValueDidChange(_ datePicker: UIDatePicker) {
let formatter = DateFormatter() // Date 타입과 관련된 포맷터
formatter.dateFormat = "yyyy년 MM월 dd일(EEEEE)" // 요일을 한글자만
formatter.locale = Locale(identifier: "ko_KR")
self.date = datePicker.date
self.dateTextField.text = formatter.string(from: datePicker.date)
}
}
반응형
'iOS > iOS' 카테고리의 다른 글
[iOS] UIView.animate를 활용한 애니메이션 처리 (0) | 2022.01.11 |
---|---|
[iOS] Content Hugging과 Content Compression Resistance (0) | 2022.01.04 |
[iOS] UITabBarController - 다중 선택 인터페이스 (0) | 2021.12.12 |
[iOS] ViewController의 생명주기(Life Cycle) (0) | 2021.12.12 |
[iOS] UserDefaults를 사용한 데이터 저장 (0) | 2021.12.07 |
댓글