【问题标题】:How to know what day the user touched in a date picker in SwiftUI如何知道用户在 SwiftUI 中的日期选择器中触摸了哪一天
【发布时间】:2021-08-12 21:40:51
【问题描述】:

大家下午好,

我想知道是否有任何方法可以识别在 swiftui 中的 datePicker 中按下了哪一天,因为我想知道用户按下了哪一天并能够将其保存在变量中?

DatePicker("My calendar", selection: $startDate,in:Date()..., displayedComponents: .date)
        
        .accentColor(.Teal)
        .background(
                       RoundedRectangle(cornerRadius: 30)
                        .stroke(Color.Teal, lineWidth: 3)
                    )
        .labelsHidden()
        .environment(\.colorScheme, .dark)
        .datePickerStyle(GraphicalDatePickerStyle())
        .padding()
        }

如照片所示,我如何知道用户在第 12 天或第 13 天点击了,在 swiftui 中是否有代表知道?

【问题讨论】:

    标签: swift swiftui


    【解决方案1】:

    您可以使用onChange(of:perform:) 修饰符来检测所选日期的变化:

    .onChange(of: startDate) { newDate in
        print("selected date: \(newDate)")
    
        let day = Calendar.current.dateComponents([.day], from: newDate).day!
        print("day: \(day)")
    }
    

    示例打印:

    选择日期:2021-08-20 21:59:00 +0000
    天:20

    【讨论】:

      【解决方案2】:

      您为选择定义了$startDate。您需要一个名为 startDate 的状态变量来存储选定的日期。

      有关完整说明,请点击此链接:https://www.hackingwithswift.com/quick-start/swiftui/how-to-create-a-date-picker-and-read-values-from-it

      编辑: 正如@George 提到的,如果您想检测状态变量的变化,请使用onChange(of:perform:) 修饰符。

      【讨论】:

        猜你喜欢
        • 2012-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-24
        • 1970-01-01
        • 2013-02-13
        • 2021-03-31
        • 1970-01-01
        相关资源
        最近更新 更多