티스토리 뷰
UIAlertController를 활용하면 단순히 확인, 설정, 취소만 할 수 있는 게 아니라 UIPickerView나 UIDatePicker 등을 활용하여 좀 더 풍부한 알림창을 띄울 수 있습니다.
1. xcode 파일을 생성하고 UILabel, UIButton를 추가, 해당 ViewController에 연결해줍니다.
class ViewController: UIViewController {
// 화면에 띄울 라벨 의미
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
}
// Alert을 띄워줄 버튼 의미
@IBAction func button(_ sender: UIButton) {
}
}
2. AlertViewController와 DatePicker를 클래스 내에 변수로 선언해주고, ViewDidLoad()에서 초기화해줍니다.
class ViewController: UIViewController {
// 알림과 데이트피커 선언
var alert = UIAlertController(title: "Test", message: "날짜를 선택해주세요.", preferredStyle: .alert)
var datePicker = UIDatePicker()
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// 데이트피커의 모드, 시간대, 그리고 스타일 설정
datePicker.datePickerMode = .date
datePicker.locale = Locale(identifier: "ko-KR")
datePicker.preferredDatePickerStyle = .wheels
// 알림에 텍스트필드를 추가, 텍스트필드의 inputView를 데이트피커로 설정
alert.addTextField { textField in
textField.inputView = self.datePicker
textField.textAlignment = .center
}
// 데이트피커의 값이 변할 때마다 호출될 dateValueChanged
datePicker.addTarget(self, action: #selector(dateValueChanged), for: .valueChanged)
// 취소, 추가 버튼(ok를 누르면, ViewController에 있는 label을 현재 설정한 날짜로 바꿔줌)
let cancel = UIAlertAction(title: "닫기", style: .cancel)
let ok = UIAlertAction(title: "설정", style: .default, handler: { _ in self.label.text = self.alert.textFields?[0].text})
// 알림에 두 버튼 추가
alert.addAction(cancel)
alert.addAction(ok)
}
3. dateValueChanged라는 메서드가 호출될 때마다 텍스트필드의 글자를 해당 날짜(string으로 변경 후)로 갱신합니다.
@objc func dateValueChanged() {
// alert의 텍스트필드 중 첫번째 텍스트필드에 데이트피커의 날짜를 문자열로 변경 후 표현
alert.textFields?[0].text = datePicker.date.description
}
'Dev > iOS' 카테고리의 다른 글
Dev : 앨범, 카메라 이미지 불러오기 & 저장하기 (0) | 2022.05.01 |
---|---|
[Dev, iOS] Modal로 띄운 ViewController에서 Navigation으로 Push하기 (7) | 2022.03.30 |
Tip : 프로퍼티(변수) 값 변경마다 특정 메서드를 실행해야 할 때 (0) | 2022.02.27 |
Tip : 같은 함수를 여러 프로퍼티에 적용하고 싶을 때 (0) | 2022.02.27 |
Dev : StoryBoard 없이 시작하기 (Xcode 13) (0) | 2022.01.27 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 곱셈의 역원
- c++
- BOJ
- swift
- how to start without storyboard
- TIP
- PS
- Python
- how to remove border of tabbarcontroller
- SceneDelegate
- DP
- pyrebase
- D3
- CSV
- Array
- 보라매사옥
- DFS
- ios
- CSS
- Javascript
- 하노이탑이동순서
- 파이썬
- SVG
- 자료구조
- 백트래킹
- 백준
- HTML
- 정보시각화
- 알고리즘
- xcode
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
글 보관함