티스토리 뷰
안녕하세요 :) Zedd입니다.
UserNotification예제 만들다가..Date Picker를 오랜만에 만져보게 되었습니다ㅎㅎ
그래서 DatePicker에 여러가지 모드들과, Date Picker에서 고른 값을 가져오는 방법을 알아보겠습니다 :)
Date Picker
Date Picker는 Delegate나 DataSource는 따로 없습니다.
Main 스토리보드에서 Date Picker를 추가하면 이렇게 되죠?
오른쪽의 inspector에서 Mode와 같은 여러가지 속성을 바꿀 수 있습니다.
모드에는 이렇게 4가지 모드가 있습니다.
하나씩 살펴봅시다.
● dateAndTime
● date
● time
● countDownTimer
(이건 왜 영어로 나오는지....)
오른쪽 inspector보시면, 뭔지 다 대충 아실 수 있을거에요.
locale은 지역(Xcode상에서는 영어로 나오지만, 폰에 앱 올리시면 한국어로 나올거에요 XD(디바이스 언어가 한국어면!!))
intervale은 그 시간시간 사이의 간격을 의미합니다.
음..저는 일단 Mode를 "time"으로 할게요.
그럼 이렇게 설정하면, 실시간으로 이 시간 정보는 어떻게 가져오냐?
(일단 저는 이 Date Picker를 코드로 만들어서...만약에 스토리보드에서 추가하셨다면, Date Picker에 IBAction을 추가할 수 있답니다. 그 IBAction안에 지금부터 할 코드를 넣어주세요.
만약에 코드로 Date Picker를 만드셨다면..
이렇게 나의 pickerView에 addTarger을 해주세요. 그럼 selector메소드를 만들어야겠죠?
자. 이제 실시간으로 pickerView의 데이터를 가져와봅시다.
저는 label에 update해줄거에요.
그러면 먼저 이 pickerView의 날짜/시간정보를 가져와야하는데, DateFormatter가 필요합니다. DateFormatter 객체를 하나 만들어줄게요.
이제 어떤 "모양"으로 날짜/시간을 가져오고 싶은지 정하면 됩니다.
dateStyle과 timeStyle을 통해서 자기가 가져오고 싶은 모양을 가져오면돼요.
이런식으로요. none과 short는 제가 그냥 준건데, style에는 어떤게 있는지 살펴봅시다.
"종합적으로" DateFormatter.Style에는 5가지가 있는 것을 볼 수 있네요.
이 DateFormatter.Style을 date와 time에 각각 적용할 수 있는것입니다.
25가지의 경우의 수가 나오겠네요 ㅎㅎ..
자 하나씩 살펴봅시다.
● full
func changed(){
let dateformatter = DateFormatter()
dateformatter.dateStyle = .full
dateformatter.timeStyle = .full
}
네! 2017년 11월 13일 월요일 까지가 Date.
오후 2시 57분 25초 대한민국 표준시 까지가 Time입니다.
제가 굳이 DatePickerMode를 time으로 했는데도!! 날짜까지 다 나오죠? ㅎㅎ
● long
func changed(){
let dateformatter = DateFormatter()
dateformatter.dateStyle = .long
dateformatter.timeStyle = .long
}
2017년 11월 13일 까지가 Date
오후 3시 1분 16초 GMT+9 까지가 Time입니다.
● medium
func changed(){
let dateformatter = DateFormatter()
dateformatter.dateStyle = .medium
dateformatter.timeStyle = .medium
}
2017. 11. 13까지가 Date
오후 3:02:29가 Time
● short
func changed(){
let dateformatter = DateFormatter()
dateformatter.dateStyle = .medium
dateformatter.timeStyle = .medium
}
2017. 11. 13까지 Date.
오후 3:07가 time
● none
자, none은 이름에서 볼 수 있듯이 아무것도 없는거죠? date와 time을 둘다 none으로 설정해버리면 아무것도 안나옵니다.
그러니까 아 나는 날짜는 빼고, 시간만 나오게 하고싶어!!라고 할 때 유용하겠죠.
제가 pickerMode를 time으로 했었죠?
그럼 앞에 날짜는 굳이 필요없으니까...
func changed(){
let dateformatter = DateFormatter()
dateformatter.dateStyle = .none
dateformatter.timeStyle = .short
}
이렇게 해버리면 되겠죠
이렇게요 :)
지금까지 DateFormatter.Style을 살펴본거고!!!!!아직 label에 업데이트 하는 방법을 알려드리지 않았네요.
label의 text에는 "String"만 들어갈 수 있죠? 그래서 우리는 이 날짜/시간 데이터를 String으로 만들어야 합니다.
그리고 그렇게 String으로 변환한 날짜/시간을 저희 label에 넣어주면 되겠죠.
func changed(){
let dateformatter = DateFormatter()
dateformatter.dateStyle = .none
dateformatter.timeStyle = .short
let date = dateformatter.string(from: pickerView.date)
myLabel.text = date
}
이렇게요!!
ㅎㅎ
간--------단
핳ㅎㅎ 오늘도 도움이 되었길 바라며!! 다음글은 UserNotification(2탄)글이 될 것 같아요.
1탄은 < 왕초보를 위한 UserNotification >를 참고해주세요 :)
'iOS' 카테고리의 다른 글
iOS ) 왕초보를 위한 xib 사용법 (4) | 2017.11.20 |
---|---|
iOS ) 네이버 검색 API 사용시..<b></b> (2) | 2017.11.14 |
iOS ) firebase에서 value로 검색하기 (2) | 2017.11.09 |
iOS ) Xcode 프로젝트 이름 바꾸는 방법 (7) | 2017.11.08 |
iOS ) Cannot load module '..' as '...''에러 해결 (0) | 2017.11.08 |
- Swift
- FLUTTER
- 스위프트 문법
- swift3
- swift array
- WWDC
- fastlane
- IOS
- github
- SwiftUI
- WKWebView
- 제이슨 파싱
- ios 13
- swift sort
- 회고
- Accessibility
- UIBezierPath
- np-complete
- np-hard
- Git
- swift tutorial
- Combine
- actor
- 스위프트
- WidgetKit
- iOS delegate
- swift 공부
- 피아노
- Xcode
- swift delegate
- Total
- Today
- Yesterday