Study/Swift

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

minulbora 2024. 12. 17. 11:38

데이트피커란?

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

 

        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
        }
    }
    
    
}