SwiftUI MultiDatePicker 选择在非空初始选择时中断

Joh*_*ohn 1 datepicker swiftui

我需要对 进行初步选择MultiDatePicker。我尝试将其分配给您,init如您在下面和中看到的那样onAppear。在这两种情况下,取消选择初始选择都不起作用,它始终保留在 中dates。如何解决这个问题?

import SwiftUI

struct ContentView: View {
    @State private var dates: Set<DateComponents>
    
    init() {
        let now = Calendar.current.dateComponents([.year, .month, .day], from: .now)
        _dates = State(initialValue: [now])
    }
    
    var body: some View {
        VStack {
            MultiDatePicker("", selection: $dates)
                .onChange(of: dates) {_ in
                    print("Selection changed")
                }
            Text(datesStr)
        }.padding()
    }
    
    var datesStr: String {
        dates
            .map{ Calendar.current.date(from: $0)!.formatted(date: .numeric, time: .omitted) }
            .joined(separator: "\n")
    }
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,这句话也有同样的问题(这不能满足我的需求,因为它不是动态的):

@State private var dates: Set<DateComponents> = [Calendar.current.dateComponents([.year, .month, .day], from: .now)]
Run Code Online (Sandbox Code Playgroud)

在 Xcode 14.0.1 和 14.1 beta 3 中测试。

Joh*_*ohn 6

只需使用[.calendar, .era, .year, .month, .day]而不是[.year, .month, .day]. 这就是所期望的DateComponents格式MultiDatePicker

我在想知道为什么相同的内容DateComponents可以出现两次后才找到这个解决方案Set(正如您所知,它只允许唯一的元素)。嗯,它们并不完全相同。