๊ณต๋ถํ ๋ด์ฉ์ ์ ๋ฆฌํ ๊ธ์ ๋๋ค.
๋ฌธ์
ํ์ฌ ์๊ฐ์ด ์ ํํ ์๊ฐ๊ณผ ๊ฐ์์ง๋ฉด ์ผ๋ฟ์ผ๋ก ์๋ฆผ ๋ฉ์ธ์ง๋ฅผ ๋ํ๋ด๋ ์๋ ์๊ณ๋ฅผ ๋ง๋ค์ด ๋ณด์ธ์.
์๋ฆผ ๋ฉ์ธ์ง๋ฅผ ๋๋ฅธ ํ์๋ 1๋ถ ๋์ ์๋ฆผ ์ฐฝ์ด ๋ํ๋์ง ์๊ฒ ์ค์ ํด ๋ณด์ธ์.
๊ตฌํ ์์
- ๋ ์ด์์ ๊ตฌ์ฑ
- ์์ธ๋ ๋ณ์์ ์ก์ ํจ์ ์์ฑ
- ํ์ฌ ์๊ฐ ์ถ๋ ฅํ๊ธฐ - 1์ด๋ง๋ค ํ์ฌ ์๊ฐ ๊ฐฑ์ (ํ์ด๋จธ ์ฌ์ฉ)
- ์ ํ ์๊ฐ ์ถ๋ ฅํ๊ธฐ
- ํ์ฌ ์๊ฐ๊ณผ ์ ํ ์๊ฐ ๋น๊ต ํ ์๋ฆผ ๋ฉ์ธ์ง ๋์ฐ๊ธฐ
- ์๋ฆผ ๋ฉ์ธ์ง ํ์ธ ์งํ 1๋ถ ๋์ ์๋ฆผ ์ฐฝ์ด ๋ํ๋์ง ์๊ฒ ํ๊ธฐ
์ต์ข ๊ฒฐ๊ณผ
https://88yhtserof.tistory.com/20
Date Picker ๋ฅผ ์ฌ์ฉํ ์๋ ์๊ณ์ Alert ๊ธฐ๋ฅ์ ๋ํด ์๋ ๋ฉ์ธ์ง๊ฐ ๋จ๋ ์๋ ์๊ณ๋ฅผ ๋ง๋ค ์์ ์ด๋ค.
์๋ ์๊ณ ๊ด๋ จํ ๋ด์ฉ์ ์ด์ ๊ฒ์๊ธ๊ณผ ๋์ผํ๋ค.
์์ธ๋ ๋ณ์์ ์ก์ ํจ์
- ์ก์ ํจ์: ๊ฐ์ฒด๊ฐ ์ ํ๋์์ ๋ ์ด๋ค ๋์์ ์ํํด์ผ ํ๋ค๋ฉด ์ก์ ํจ์๋ก ์ถ๊ฐํ๋ค. ์) DatePicker์ ์ ํํ์ ๋
- ์์ธ๋ ๋ณ์: ๊ฐ์ฒด์ ๊ฐ์ ์ด์ฉํ๊ฑฐ๋ ์์ฑ๋ค์ ์ ์ดํด์ผ ํ๋ค๋ฉด ์์ธ๋ ๋ณ์ ํํ๋ก ์ถ๊ฐํ๋ค. ์) ํด๋น ๋ ์ด๋ธ์ text ๊ฐ์ด ํ์ํ ๋
5. ํ์ฌ ์๊ฐ๊ณผ ์ ํ ์๊ฐ ๋น๊ต ํ ์๋ฆผ ๋ฉ์ธ์ง ๋์ฐ๊ธฐ
์ผ๋ฟ Alert
: ์ฌ์ฉ์์๊ฒ ์ค์ํ ๋ฉ์ธ์ง๋ ๊ฒฝ๊ณ ๋ฌธ๊ตฌ๋ฅผ ๋ํ๋ด์ผ ํ ๋ ์ฌ์ฉํ๋ค. ์ฌ์ฉ์์ ์ฃผ์๋ฅผ ์ง์ค์ํค๋ ๊ฒฝ๊ณ ๋ก ์ฌ์ฉํ ์๋ ์๊ณ , ํ์ ์กฐ์น๋ฅผ ์ทจํ ์๋ ์๋ค.
UIAlertController
An object that displays an alert message to the user.
Use this class to configure alerts and action sheets with the message that you want to display and the actions from which to choose. After configuring the alert controller with the actions and style you want, present it using the present(_:animated:completion:) method.
์ฌ์ฉ์์๊ฒ ๊ฒฝ๊ณ ๋ฉ์ธ์ง๋ฅผ ๋ณด์ฌ์ค ๊ฐ์ฒด์ด๋ค.
์ด ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ํ์ํ ๊ฒฝ๊ณ ๋ฉ์์ง์ ์ ํํ ๋์๋ค์ ๋ํ ์ก์ ์ํธ๋ฅผ ๊ตฌ์ฑํ ์ ์๋ค. ์ํ๋ ๋์๊ณผ alert ์คํ์ผ๋ก Alert Controller์ ๊ตฌ์ฑํ ํ์ present(_:animated:completion:) ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ Alert๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ค ์ ์๋ค.
addAction(_ action: UIAlertAction)์ ์ฌ์ฉํด Alert์ ๋์๊ณผ ์ก์ ์ํธ๋ฅผ ์ถ๊ฐํ ์ ์๋ค.
UIAlertAction
An action that can be taken when the user taps a button in an alert.
You use this class to configure information about a single action, including the title to display in the button, any styling information, and a handler to execute when the user taps the button.
Alert์ ์๋ ๋ฒํผ์ ํด๋ฆญํ์ ๋ ์ทจํ ๋์์ด๋ค.
์ด ํด๋์ค๋ title, style, handler๋ฅผ ํฌํจํ์ฌ ํ๋์ ์ก์ ์ ๊ตฌ์ฑํ ๋ ์ฌ์ฉํ ์ ์๋ค. handler๋ ์ ์ ๊ฐ ๋ฒํผ์ ์ ํํ ๋ ์คํ๋ ๋์์ด๋ค. handler๋ ์ต๋ช ํจ์๋ก ์์ฑ๋๋ฉฐ handler: {} ํ์ ๋๋ UIAlertAction(title:style:){} ํ์์ผ๋ก ์์ฑํ ์ ์๋ค.
let alarmAlert = UIAlertController(title: "์๋ฆผ",
message: "์ค์ ๋ ์๊ฐ์
๋๋ค.",
preferredStyle: UIAlertController.Style.alert)
let alarmAction1 = UIAlertAction(title: "ํ์ธ",
style: UIAlertAction.Style.default,
handler: {
๋งค๊ฐ๋ณ์ in
์คํํ ์ฝ๋ ์์ฑ})
let alarmAction2 = UIAlertAction(title: "์ทจ์",
style: UIAlertAction.Style.default,
handler: nil)
alarmAlert.addAction(alarmAction1)
alarmAlert.addAction(alarmAction2)
present(alamAlert, animated: true, completion: nil)
6. ์๋ฆผ ๋ฉ์ธ์ง ํ์ธ ์งํ 1๋ถ ๋์ ์๋ฆผ ์ฐฝ์ด ๋ํ๋์ง ์๊ฒ ํ๊ธฐ
์๋ฆผ ์ฌ๋ถ๋ฅผ Bool ํ์ ์ผ๋ก ์ ์ฅํ๋ ๋ณ์๋ฅผ ์์ฑํ์ฌ false๋ก ์ด๊ธฐํํ๋ค. ์ ํํ ์๊ฐ๊ณผ ํ์ฌ ์๊ฐ์ด ๊ฐ๊ณ ์๋ฆผ ์ฌ๋ถ๊ฐ false์ผ ๋ ์๋ฆผ ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ด๊ฒ ๋๋ฉด true๋ก ๋ณ๊ฒฝํ๊ณ , ์ ํํ ์๊ฐ๊ณผ ํ์ฌ ์๊ฐ์ด ๊ฐ์ง ์์ ๋๋ false๋ก ์ด๊ธฐํํ๋ค.
์ ํํ ์๊ฐ์ด ํ์ฌ ์๊ฐ๊ณผ ๋ค๋ฅด๋ค๋ ๊ฑด 1๋ถ์ด ์ง๋ฌ๋ค๋ ์๋ฏธ๋ ๋๊ธฐ ๋๋ฌธ์ ์ ํํ ์๊ฐ์ด ํ๋ฅด๋ 1๋ถ ๋์ ์๋ฆผ ์ฐฝ์ด ๋ํ๋์ง ์๊ฒ ํ ์ ์๋ค.
import UIKit
class AlertMissionViewController: UIViewController {
var alarmFlag:Bool = false //์๋ ์ฌ๋ถ
...
@objc func updateTime(){
let date: NSDate = NSDate() //ํ์ฌ ์๊ฐ์ ๋ฐ์์ค๋ ํด๋์ค ๊ฐ์ฒด ์์ฑ
var currentTime:String = String()
let formatter = DateFormatter()
formatter.dateFormat = "yyyy๋
MM์dd์ผ a hh์mm๋ถss์ด"
lblCurrentTime.text = formatter.string(from: date as Date) //ํ์ฌ์๊ฐ ์ถ๋ ฅ
formatter.dateFormat = "yyyy๋
MM์dd์ผ a hh์mm๋ถ"
currentTime = formatter.string(from: date as Date)
if alamTime == currentTime {
if !alarmFlag { //์๋์ด ์์ง ์ธ๋ฆฌ์ง ์์๋ค๋ฉด
let alamAlert = UIAlertController(title: "์๋ฆผ",
message: "์ค์ ๋ ์๊ฐ์
๋๋ค.",
preferredStyle: UIAlertController.Style.alert)
let alamAction = UIAlertAction(title: "ํ์ธ",
style: UIAlertAction.Style.default,
handler: nil)
alamAlert.addAction(alamAction)
present(alamAlert, animated: true, completion: nil)
alarmFlag = true
}
}
else { //ํ์ฌ ์๊ฐ์ด ์ ํํ ์๊ฐ๊ณผ ๋ค๋ฅด๋ค๋ฉด
alarmFlag = false
}
//ํ์ฌ ์๊ฐ์ด ์ ํํ ์๊ฐ๊ณผ ๋ค๋ฅด๋ค๋ ๊ฑด 1๋ถ์ด ์ง๋ฌ๋ค๋ ์๋ฏธ - 1๋ถ ๋์ ์๋ฆผ ์ฐฝ์ด ๋ํ๋์ง ์๊ฒ ํ ์ ์๋ค
//์๋ ์๊ฐ์ด ์๋ ๋ ์๋ ์ฌ๋ถ๋ฅผ ์ด๊ธฐํํด์ผ ํ๋ค.
}
}
์ ์ฒด ์ฝ๋
import UIKit
class AlertMissionViewController: UIViewController {
let timeSelector: Selector = #selector(AlertMissionViewController.updateTime)//ํ์ด๋จธ๊ฐ ๊ตฌ๋๋๋ฉด ํธ์ถํ ํจ์ ์ง์
let interval:Double = 1.0 //ํ์ฌ์๊ฐ์ด ๊ฐฑ์ ๋ ๊ฐ๊ฒฉ
var alarmTime:String = String()
var alarmFlag:Bool = false //์๋ ์ฌ๋ถ
@IBOutlet var lblCurrentTime: UILabel!
@IBOutlet var lblSelectTime: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
//ํ์ฌ์๊ฐ์ interval๋ง๋ค ๊ฐฑ์ ์์ผ ์ค ํ์ด๋จธ ์ค์
Timer.scheduledTimer(timeInterval: interval, target: self, selector: timeSelector, userInfo: nil, repeats: true)
}
//๋ฐ์ดํธํผ์ปค๋ทฐ๊ฐ ๋์ํ ๋ ํธ์ถ๋๋ ์ก์
ํจ์
@IBAction func changeDatePicker(_ sender: UIDatePicker) {
let selectDate = sender.date
let formatter = DateFormatter()
formatter.dateFormat = "yyyy๋
MM์dd์ผ a hh์mm๋ถ"
lblSelectTime.text = formatter.string(from: selectDate)
alarmTime = formatter.string(from: selectDate)
}
@objc func updateTime(){
let date: NSDate = NSDate() //ํ์ฌ ์๊ฐ์ ๋ฐ์์ค๋ ํด๋์ค ๊ฐ์ฒด ์์ฑ
var currentTime:String = String()
let formatter = DateFormatter()
formatter.dateFormat = "yyyy๋
MM์dd์ผ a hh์mm๋ถss์ด"
lblCurrentTime.text = formatter.string(from: date as Date) //ํ์ฌ์๊ฐ ์ถ๋ ฅ
formatter.dateFormat = "yyyy๋
MM์dd์ผ a hh์mm๋ถ"
currentTime = formatter.string(from: date as Date)
if alarmTime == currentTime {
if !alarmFlag { //์๋์ด ์์ง ์ธ๋ฆฌ์ง ์์๋ค๋ฉด
let alarmAlert = UIAlertController(title: "์๋ฆผ",
message: "์ค์ ๋ ์๊ฐ์
๋๋ค.",
preferredStyle: UIAlertController.Style.alert)
let alarmAction = UIAlertAction(title: "ํ์ธ",
style: UIAlertAction.Style.default,
handler: nil)
alarmAlert.addAction(alarmAction)
present(alarmAlert, animated: true, completion: nil)
alarmFlag = true
}
}
else { //ํ์ฌ ์๊ฐ์ด ์ ํํ ์๊ฐ๊ณผ ๋ค๋ฅด๋ค๋ฉด
alarmFlag = false
}
//ํ์ฌ ์๊ฐ์ด ์ ํํ ์๊ฐ๊ณผ ๋ค๋ฅด๋ค๋ ๊ฑด 1๋ถ์ด ์ง๋ฌ๋ค๋ ์๋ฏธ - 1๋ถ ๋์ ์๋ฆผ ์ฐฝ์ด ๋ํ๋์ง ์๊ฒ ํ ์ ์๋ค
//์๋ ์๊ฐ์ด ์๋ ๋ ์๋ ์ฌ๋ถ๋ฅผ ์ด๊ธฐํํด์ผ ํ๋ค.
}
}
๊ณต๋ถ์๋ฃ
Do It! ์ค์ํํธ๋ก ์์ดํฐ ์ฑ ๋ง๋ค๊ธฐ ๊ฐ์ 5ํ
SWIFT ๋ฌธ์