如何知道用户在 SwiftUI 中的日期选择器中触摸了哪一天
Posted
技术标签:
【中文标题】如何知道用户在 SwiftUI 中的日期选择器中触摸了哪一天【英文标题】:How to know what day the user touched in a date picker in 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 中是否有代表知道?
【问题讨论】:
【参考方案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:) 修饰符。
【讨论】:
以上是关于如何知道用户在 SwiftUI 中的日期选择器中触摸了哪一天的主要内容,如果未能解决你的问题,请参考以下文章