메모장 어플을 만들면서 날짜를 기록하기 위해 datePicker를 사용해보았다.
UIdatePicker는 Date객체와 텍스트를 변환해주는 UIControl이다.
지금 만들고 있는 앱에서는 날짜를 datePicker로 선택해서 DiaryDate라는 Date타입 변수에 저장할 것이다.
private func configureDateFigure() {
datePicker.datePickerMode = .date
datePicker.preferredDatePickerStyle = .wheels
datePicker.addTarget(self, action: #selector(datePickerDidChange(_:)), for: .valueChanged)
dataTextField.inputView = datePicker
}
datePicker를 생성해주는 코드는 위와 같다.
addTarget 메서드는 값이 바뀔대마다 datePickerDidChange 메서드가 실행되도록 해준다.
그 다음줄은 dateTextField를 선택했을 때 키보드가 아닌 날짜 선택 창이 뜨도록 해준다.
참고로 데이터 객체는 Date()를 선언하면 현재의 Date를 얻을 수 있다.
이때 얻은 Date는 "2020-08-13 09:14:48 +0000" 이러한 형태로 넘어온다. 이것을 우리는 원하는 형태의 텍스트로 변환해서 보여주고 저장할 것이다.
@objc func datePickerDidChange(_ datePicker: UIDatePicker) {
let dateFormatter = DateFormatter()
//날짜와 텍스트 변환해줌, date를 날짜로/ 날짜를 date로 변환
dateFormatter.dateFormat = "yyyy/ MM/ dd/(EEEEE)"
dateFormatter.locale = Locale(identifier: "ko_KR")
diaryDate = datePicker.date
dataTextField.text = dateFormatter.string(from: datePicker.date)
}
datePickerDidChange 메서드를 작성하였는데 DateFormatter를 사용하여 date객체를 변환시켰다.
여기서 잘못 읽고 월을 계속 소문자로 입력해서 시간을 버렸다..ㅎ