テックキャンプ166日目〜日付をホイールで選択する

kobasaです(´ω`*)
期限日の入力をホイールで選択できるようにしていました。
資料を漁りながらテキストフィールドにホイールで選択した日付を反映するミニアプリで実験。

class ViewController: UIViewController {

    @IBOutlet weak var limit: UITextField!
    var datePicker: UIDatePicker = UIDatePicker()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // ピッカーの設定
        datePicker.datePickerMode = UIDatePicker.Mode.date
        datePicker.timeZone = NSTimeZone.local
        datePicker.locale = Locale.current
        datePicker.preferredDatePickerStyle = .wheels
        
        // 決定バーの生成
        let toolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: view.frame.size.width, height: 35))
        let spaceItem = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil)
        let doneItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(expirationDateDone))
        toolbar.setItems([spaceItem, doneItem], animated: true)
        
        // インプットビュー変更
        limit.inputView = datePicker
        limit.inputAccessoryView = toolbar
    
    }

    // 決定ボタンを押したときの処理
    @objc func expirationDateDone() {
        // 入力画面が閉じる
        limit.endEditing(true)
        
        // 日付のフォーマット
        let formatter = DateFormatter()
        formatter.dateFormat = "yyyy-MM-dd"
        limit.text = "\(formatter.string(from: datePicker.date))"
    }
}

ピッカーの設定でUIDatePicker.Mode.dateにすると年/月/日の設定になります。

また.preferredDatePickerStyle = .wheelsの設定でホイール表示になります。
何も設定しないと見慣れない表示になりますw

インプットビューの変更を記述することでテキストフィールドをタップしたときに
キーボード以外の表示にすることができます。今回は設定したdatePickerですね。

ホイールで日付を選択してdoneボタンを押す処理では、
フォーマットで表示される文字を設定しています。
datePicker.dateでホイールで選択された日付を取得します。

シミュレータ表示

それっぽい感じになりました!
あとは日付を日本語に設定することと、
日付の範囲を指定したいです。

ところで紙のクーポン券の期限って
どのくらいが一般的なんでしょうね?
本日〜2ヶ月後までくらい?

コメント

タイトルとURLをコピーしました