Do it! 스위프트로 아이폰 앱 만들기
06장 도전! Misson 알람 시계 만들기
* 알람 시계 앱 이전 버전에서 코드 추가하기
class ViewController: UIViewController {
let timeSelector: Selector = #selector(ViewController.updateTime)
let interval = 1.0
var alarmTime: String?
//추가 코드
var isCheck = false
@objc func updateTime() {
let date = Date()
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss EEE"
lblCurrentTime.text = "현재시간: " + formatter.string(from: date)
formatter.dateFormat = "yyyy-MM-dd HH:mm"
let currentTime = formatter.string(from: date)
//추가 코드
if alarmTime == currentTime {
if !isCheck {
let alarmAlert = UIAlertController(title: "알림", message: "설정된 시간입니다 !!!", preferredStyle: UIAlertController.Style.alert)
let yesAction = UIAlertAction(title: "네, 알겠습니다.", style: UIAlertAction.Style.default, handler: nil)
alarmAlert.addAction(yesAction)
present(alarmAlert, animated: true, completion: nil)
isCheck = true
}
}
else { isCheck = false }
}
[네, 알겠습니다.] 를 누르면 1분 동안 알림 창 나타나지 않게 설정해보라고 해서 처음에는 yesAction의 handler에 isCheck = true 코드를 넣었었다.
실행해보니 팝업 창이 중복으로 뜨는 문제가 발생했다.
챗 gpt 한테 물어보니 버튼을 누르는 것보다 updateTime() 메소드 호출 시점이 더 빠르면 팝업이 중복으로 뜰 수 있다는 것이었다.
그래서 그냥 handler 는 nil 로 설정하고 present 직후에 isCheck = true 를 실행하게 하니 문제가 해결되었다.