[스위프트 기초] 4장 데이트 피커 사용해보기

    데이트피커란?

    날짜와 시간을 선택할 수 있게 해주는 객체. (시계/미리 알람/캘린더 등)

     

            lblPickerTime.text = "선택시간: " + formatter.string(from: datePickerView.date)
            // = 앞뒤로는 반드시 스페이스 필요, 없으면 오류

    import UIKit
    
    class ViewController: UIViewController {
    
        @IBOutlet var lblCurrentTime: UILabel!
       
        @IBOutlet var lblPickerTime: UILabel!
        
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view.
        }
    
        @IBAction func changeDatePicker(_ sender: UIDatePicker) {
            let datePickerView = sender //datePickerView 라는 상수에 UIDatePicker의 자료형 인수 (sender)가 저장됨.
            
            let formatter = DateFormatter()
            formatter.dateFormat = "yyyy-MM-dd HH:mm EEE"
            
            lblPickerTime.text = "선택시간: " + formatter.string(from: datePickerView.date)
        }
        
    }

    2. 타이머 기능 추가하기

    import UIKit
    
    class ViewController: UIViewController {
        
        let timeSector: Selector = #selector(ViewController.updateTime)
        let interval = 1.0
        var cnt = 0
        
        
        @IBOutlet var lblCurrentTime: UILabel!
        @IBOutlet var lblPickerTime: UILabel!
        
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view.
            
            Timer.scheduledTimer(timeInterval: interval, target: self, selector: timeSector, userInfo: nil, repeats: true)
            //target: 동작될 view, selector: 타이머가 구동될 때 실행할 함수
        }
    
        @IBAction func changeDatePicker(_ sender: UIDatePicker) {
            let datePickerView = sender //datePickerView 라는 상수에 UIDatePicker의 자료형 인수 (sender)가 저장됨.
            
            let formatter = DateFormatter()
            formatter.dateFormat = "yyyy-MM-dd HH:mm EEE"
            
            lblPickerTime.text = "선택시간: " + formatter.string(from: datePickerView.date)
        }
        
        @objc func updateTime(){
            lblCurrentTime.text = String(cnt)
            cnt += 1
        }
    }

    타이머 정상 작동 확인

     

    @objc func updateTime(){
    //        lblCurrentTime.text = String(cnt)
    //        cnt += 1
            let date = NSDate() // 현재 시간을 NSDate 함수를 통해서 가져옴
            let formatter = DateFormatter()
            formatter.dateFormat = "yyyy-MM-dd HH:mm:ss EEE"
            lblCurrentTime.text = "현재시간: " + formatter.string(from: date as Date)
        }

    정상 작동

     

    3. 도전과제 : 알람 시계 만들기 

    (조건)
    1단계: 현재 시간이 선택 시간과 같게 되면 1분동안 배경이 빨간색으로 변하게 만든다. 
    2단계: 1분이 지나 시간이 달라지면 다시 정상적인 배경화면으로 변경되게 만든다. 

    (힌트)
    배경화면 변경
    시간 비교

    
    import UIKit
    
    class ViewController: UIViewController {
        
        let timeSector: Selector = #selector(ViewController.updateTime)
        let interval = 1.0
        var cnt = 0
        var alarmTime = ""
        
        
        @IBOutlet var lblCurrentTime: UILabel!
        @IBOutlet var lblPickerTime: UILabel!
        
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view.
            
            Timer.scheduledTimer(timeInterval: interval, target: self, selector: timeSector, userInfo: nil, repeats: true)
            //target: 동작될 view, selector: 타이머가 구동될 때 실행할 함수
        }
    
        @IBAction func changeDatePicker(_ sender: UIDatePicker) {
            let datePickerView = sender //datePickerView 라는 상수에 UIDatePicker의 자료형 인수 (sender)가 저장됨.
            
            let formatter = DateFormatter()
            
            formatter.dateFormat = "yyyy-MM-dd HH:mm EEE"
            
            lblPickerTime.text = "선택시간: " + formatter.string(from: datePickerView.date)
            
            
            formatter.dateFormat = "hh:mm aaa"
            alarmTime = formatter.string(from: datePickerView.date)
        }
        
        @objc func updateTime(){
    //        lblCurrentTime.text = String(cnt)
    //        cnt += 1
            let date = NSDate() // 현재 시간을 NSDate 함수를 통해서 가져옴
            let formatter = DateFormatter()
            formatter.dateFormat = "yyyy-MM-dd HH:mm:ss EEE"
            lblCurrentTime.text = "현재시간: " + formatter.string(from: date as Date)
            
            formatter.dateFormat = "hh:mm aaa"
            let currentTime = formatter.string(from: date as Date)
            
            if (alarmTime == currentTime){
                view.backgroundColor = UIColor.red
            }
            else{
                view.backgroundColor =  UIColor.white
            }
        }
        
        
    }

    댓글