[iOS] 데이트 피커 만들기

!·2022년 8월 9일
0

iOS

목록 보기
7/22

기능

  1. 현재시각(년도, 달, 일, 시간, 요일)을 표시해주는 레이블
  2. 데이트 피커를 통해 날짜와 시간을 선택할 수 있도록 한다.
  3. 데이트 피커로 선택한 날짜를 레이블로 나타낸다
  4. 현재 시간과 선택 시간이 같아지면 경고창을 띄운다.

코드

//
//  ViewController.swift
//  DatePicker
//
//  Created by LEE on 2022/08/09.
//

import UIKit

class ViewController: UIViewController {

    let timeSelector : Selector = #selector(ViewController.updateTime)
    let interval = 1.0
    var count = 0
    var alarmTime: String = ""
    
    @IBOutlet var currentTimeLabel: UILabel!
    @IBOutlet var datePickerLabel: UILabel!
    @IBOutlet var datePickerView: UIDatePicker!
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        Timer.scheduledTimer(timeInterval: interval, target: self, selector: timeSelector, userInfo: nil, repeats: true)
    }


    @IBAction func changeDatePicker(_ sender: UIDatePicker) {
        let formatter = DateFormatter()
        formatter.dateFormat = "yyyy-MM-dd HH:mm EEE"
        
        datePickerLabel.text = "선택시간 : " + formatter.string(from: sender.date)
        
        formatter.dateFormat = "hh:mm aaa"
        alarmTime = formatter.string(from: datePickerView.date)
        
    }
    @objc func updateTime(){
        let date = NSDate()
        
        let formatter: DateFormatter = DateFormatter()
        formatter.dateFormat = "yyyy-MM-dd HH:mm EEE"
        currentTimeLabel.text = "현재시각 : " + formatter.string(from: date as Date)
        formatter.dateFormat = "hh:mm aaa"
        let currentTime = formatter.string(from: date as Date)
        if(currentTime == alarmTime)
        {
            let alert = UIAlertController(title: "알림", message: "설정하신 시간입니다.", preferredStyle: .alert)
            let action = UIAlertAction(title: "네, 알겠습니다.", style: .default)
            alert.addAction(action)
            present(alert, animated: true, completion: nil)
        }else{
            view.backgroundColor = .white
        }
    }
}
  • Selector 로 현재시각을 구하는 함수를 받는다.
  • 이때 현재 시간을 구하는 함수는 NSDate() 를 통해 현재시각을 초단위로 받아온다.
  • DateFormatter 클래스를 통해 시간의 데이터 포맷을 지정한다.
  • 데이터 포맷 변수에 string() 함수를 이용하여 지정한 데이터 형식을 String 데이터 타입으로 받아온다. (현재시각 불러오는 기능 구현 끝
  • TimeScheduled() 메소드로 시간 간격을 전달하고, target은 뷰 컨트롤러로 하도록 하여 뷰컨트롤러가 전달한 시간 간격마다 시간 객체라 set되도록 한다. 셀렉터에는 현재 시간을 갱신하기 위해 만든 셀렉터 함수를 전달한다.
  • 이때 셀렉터 함수는 @objc 속성을 부여해야한다.
  • 마찬가지로 데이터 포맷 클래스의 string() 메소드에 데이터 피커객체의 date 을 전달하여 레이블에 표현한다.
profile
개발자 지망생

0개의 댓글