カスタムコード
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
import SwiftUI //年月のみのカスタムピッカー struct YearMonthDatePicker: UIViewRepresentable { @Binding var date: Date // UIKItのUIDatePickerを作成し、設定を行う func makeUIView(context: Context) -> UIDatePicker { let picker = UIDatePicker() picker.datePickerMode = .yearAndMonth // ここで年と月のみのモードを設定 picker.preferredDatePickerStyle = .wheels // ホイールスタイルで表示 picker.locale = Locale(identifier: "ja_JP") picker.addTarget(context.coordinator, action: #selector(Coordinator.didChangeDate), for: .valueChanged) return picker } // UIKItのビューの状態を更新 func updateUIView(_ uiView: UIDatePicker, context: Context) { uiView.date = date } // UIViewとSwiftUIの間の調整役(Coordinator)を作成 func makeCoordinator() -> Coordinator { Coordinator(self) } // UIDatePickerの値変更イベントを処理するCoordinatorクラス class Coordinator: NSObject { var parent: YearMonthDatePicker init(_ parent: YearMonthDatePicker) { self.parent = parent } @objc func didChangeDate(_ sender: UIDatePicker) { parent.date = sender.date } } } |
使い方
|
1 2 3 4 5 6 7 |
@State var date_pick: Date = Date() // View body内 YearMonthDatePicker(date: $date_pick) 取得したい変数.year = Calendar.current.component(.year, from: date_pick) 取得したい変数.month = Calendar.current.component(.month, from: date_pick) |
文字色は変更できなかった、裏技的なものがあるらしい。

コメント