SwiftUI:如何创建自定义UIDatePicker

问题描述 投票:0回答:1

我成功地在SwifUI中创建了UIDatePicker,但是当我在选择器中更改日期轮时,日期值未更新,这是我的代码:

    struct DatePicker: UIViewRepresentable {
    @Binding var date: Date

    func makeUIView(context: Context) -> UIDatePicker {
        let view = UIDatePicker()
        view.datePickerMode = .date
        return view
    }
    func updateUIView(_ uiView: UIDatePicker, context: Context) {
        uiView.date = date
    }
}

然后我从这样的视图中调用它:

struct SwiftUIView: View {
  @State var date = Date()
    var body: some View {
      DatePicker(date: self.$date)
  }
}
xcode datepicker swiftui uidatepicker
1个回答
0
投票
struct DatePicker: UIViewRepresentable { @Binding var date: Date private let datePicker = UIDatePicker() func makeUIView(context: Context) -> UIDatePicker { datePicker.datePickerMode = .date datePicker.addTarget(context.coordinator, action: #selector(Coordinator.changed(_:)), for: .valueChanged) return datePicker } func updateUIView(_ uiView: UIDatePicker, context: Context) { datePicker.date = date } func makeCoordinator() -> DatePicker.Coordinator { Coordinator(date: $date) } class Coordinator: NSObject { private let date: Binding<Date> init(date: Binding<Date>) { self.date = date } @objc func changed(_ sender: UIDatePicker) { self.date.wrappedValue = sender.date } } }
© www.soinside.com 2019 - 2024. All rights reserved.