首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >非空初始选择的SwiftUI MultiDatePicker选择中断

非空初始选择的SwiftUI MultiDatePicker选择中断
EN

Stack Overflow用户
提问于 2022-10-06 16:35:06
回答 1查看 48关注 0票数 1

我需要一个MultiDatePicker的初步选择。我试着在init中分配它,正如您在下面和onAppear中看到的那样。在这两种情况下,取消初始选择都不起作用,它始终停留在dates中。怎么解决这个问题?

代码语言:javascript
运行
复制
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")
    }
}

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

代码语言:javascript
运行
复制
@State private var dates: Set<DateComponents> = [Calendar.current.dateComponents([.year, .month, .day], from: .now)]

在Xcode 14.0.1和14.1 beta 3中测试。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-06 16:59:39

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

我刚刚找到了这个解决方案,因为我想知道为什么相同的DateComponents可以在Set中出现两次(正如您所知道的那样,它只允许唯一的元素)。他们不是完全一样的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73977262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档