Date Picker Modally - Team-Nogari/Huhoe GitHub Wiki

image

modal๋กœ ๋„์›Œ์ง€๋Š” DatePicker๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์–ด ์—ฌ๋Ÿฌ ์‹œ๋„๋ฅผ ํ•ด๋ณด์•˜๊ณ , alerts-and-pickers ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์˜คํ”ˆ ์†Œ์Šค๋ฅผ ๋ณด๊ณ  ์กฐ๊ธˆ ๋” ์ปค์Šคํ…€ํ•˜๊ฒŒ ๊ตฌํ˜„ํ•˜์˜€์Œ

class DatePickerViewController: UIViewController {
    typealias Action = (Date) -> Void
    var action: Action?
    
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    
    private let datePicker: UIDatePicker = {
        let datePicker = UIDatePicker()
        datePicker.datePickerMode = .date
        datePicker.preferredDatePickerStyle = .wheels
        datePicker.locale = Locale(identifier: "ko_KR")
        return datePicker
    }()
    
    required init(
        date: Date? = Date().yesterday,
        minimumDate: Date? = Date(timeIntervalSince1970: 1388070000), // 1388070000: Bithumb Public API Bitcoin Candlestick ๊ฐ€์žฅ ์˜ค๋ž˜๋œ UTC ์‹œ๊ฐ„
        action: Action?
    ) {
        super.init(nibName: nil, bundle: nil)
        datePicker.date = Date().yesterday
        datePicker.setDate(date ?? Date().yesterday, animated: false)
        datePicker.minimumDate = minimumDate
        datePicker.maximumDate = Date().yesterday
        self.action = action
    }
    
    required init?(coder: NSCoder) {
        super.init(coder: coder)
    }
    
    override func loadView() {
        view = datePicker
    }
    
    deinit {
        action?(datePicker.date)
    }
}
private extension UIAlertController {
    func addDatePicker(
        date: Date?,
        action: DatePickerViewController.Action?
    ) {
        let datePicker = DatePickerViewController(date: date, action: action)
        setValue(datePicker, forKey: "contentViewController")
    }
}