yehey's 공부 노트 \n ο(=•ω<=)ρ⌒☆

[ios] Locord 개발일지 - datepicker 팝업 본문

개발/프로젝트

[ios] Locord 개발일지 - datepicker 팝업

yehey 2021. 2. 7. 17:07

우선 날짜를 입력받을 텍스트 필드를 스토리보드에서 가져온다

UIDatePicker 상수를 선언

@IBOutlet weak var dateField: UITextField!
let datePicker = UIDatePicker()

그리고 팝업될 datepickerview 함수도 만들어준다. done 버튼도 추가해야함!

func createDatePickerView(){
	//toolbar 만들기, done 버튼이 들어갈 곳
	let toolbar = UIToolBar()
	toolbar.sizeToFit() //view 스크린에 딱 맞게 사이즈 조정
	
	//버튼 만들기
	let doneButton = UIBarButtonItem(barButtonSystemItem: .done, target : nil, action: #selector(donePressed))
	//action 자리에는 이후에 실행될 함수가 들어간다?
	
	//버튼 툴바에 할당
	toolbar.setItems([doneButton], animated: true)
	
	//toolbar를 키보드 대신 할당?
	dateField.inputAccessoryView = toolbar
	
	//assign datepicker to the textfield, 텍스트 필드에 datepicker 할당
	dateField.inputView = datePicker
	
}

이제 popup 구성은 끝났다!

done button 이 눌렸을 때 실행될 함수만 제작해보자! selector 로 함수 호출할 때 @objc 가 있어야 한다고 나오므로 붙여주자

@objc func donePressed(){
	dateField.text="\(datePicker.date)"
	self.view.endEditing(true)
}

여기까지만 실행하면 날짜, 시간이 굉장히 길게 출력된다.

따라서 원하는 형식으로 출력되게 하려면 살짝 수정하자

func createDatePickerView() 에서 datePicker 모드를 수정해주자

func createDatePickerView(){
	//toolbar 만들기, done 버튼이 들어갈 곳
	let toolbar = UIToolBar()
	toolbar.sizeToFit(). //view 스크린에 딱 맞게 사이즈 조정
	
	//버튼 만들기
	let doneButton = UIBarButtonItem(barButtonSystemItem: .done, target : nil, action: #selector(donePressed))
	//action 자리에는 이후에 실행될 함수가 들어간다?
	
	//버튼 툴바에 할당
	toolbar.setItems([doneButton], animated: true)
	
	//toolbar를 키보드 대신 할당?
	dateField.inputAccessoryView = toolbar
	
	//assign datepicker to the textfield, 텍스트 필드에 datepicker 할당
	dateField.inputView = datePicker

	//datePicker 형식 바꾸기
	datePicker.datePickerMode = .date
	
}

하지만 datePicker 형식을 바꾸어도 텍스트 필드에는 길게 뜬다.

얘도 수정해주자

donePressed 에서 수정한다.

@objc func donePressed(){
	//formatter
	let formatter = DateFormatter()
	formatter.dateStyle = .medium
	formatter.timeStyle = .none

	dateField.text=formatter.string(from: datePicker.date)
	self.view.endEditing(true)

}

 

Locord 에 활용한 코드

import UIKit

class record_creation: UIViewController, UITextFieldDelegate {
    
    
    @IBOutlet weak var dateField: UITextField!
    //@IBOutlet weak var image: UIImageView!
    //@IBOutlet weak var text: UITextView!
    //@IBOutlet weak var okButton: UIButton!
    //@IBOutlet weak var cancelButton: UIButton!
    let datePicker = UIDatePicker()             //날짜 처리
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        createDatePickerView()
    }
    
    //날짜 처리
    func createDatePickerView() {
        let toolbar = UIToolbar()
        toolbar.sizeToFit()
        
        let doneButton = UIBarButtonItem(barButtonSystemItem: .done, target: nil, action: #selector(donePressed))
        toolbar.setItems([doneButton], animated: true)
        datePicker.preferredDatePickerStyle = .wheels
        datePicker.datePickerMode = .date
        
        dateField.inputAccessoryView = toolbar
        dateField.inputView = datePicker
    }
    
    @objc func donePressed() {
        let formatter = DateFormatter()
//        formatter.dateStyle = .medium
        formatter.timeStyle = .none
        formatter.dateFormat = "yyyy/MM/dd"
        
        dateField.text = formatter.string(from: datePicker.date)
        self.view.endEditing(true)
    }    
}
Comments