【发布时间】:2021-06-30 02:21:24
【问题描述】:
我试图让用户通过 datePicker 上的时间选择来选择他们希望通知在什么时间发出。我将 datePicker 设置为仅显示时间,如下所示:
DatePicker("First Workout Notification Time", selection: $firstNotificationTime, displayedComponents: .hourAndMinute)
我希望 firstNotificationTime @State var 使用我的 @AppStorage 时间变量,这些时间变量在此页面上的“var body: some View”上方设置为默认值:
@AppStorage("startNoficationHour") var startNoficationHour: Int = 9
@AppStorage("startNoficationMin") var startNoficationMin: Int = 30
当视图加载时(即 .onAppear(){})我希望将 datePicker 的 $firstNotificationTime 设置为 startNoficationHour 和 startNoficationMin
我的视图设置如下:
var body: some View {
VStack {
DatePicker("First Workout Notification Time", selection: $firstNotificationTime, displayedComponents: .hourAndMinute)
}
}
.onAppear(){
// set datePicker's fisrtNotificationTime to startNotificationHour and startNotificationMin
let components = DateComponents(calendar: Calendar.current, timeZone: TimeZone.current, hour:startNoficationHour, minute: startNoficationMin)
firstNotificationTime = components.date!
print("start hour is \(startNoficationHour) and start minute is \(startNoficationMin)")
}
.onDisappear(){
// sets startNotificationHour and startNotificationMin to datePicker
let components = Calendar.current.dateComponents([.hour, .minute], from: firstNotificationTime)
startNoficationHour = components.hour!
startNoficationMin = components.minute!
print("start hour is set to \(startNoficationHour) and start minute is set to \(startNoficationMin)")
}
【问题讨论】:
-
对,但我不想添加到当前日期,我只想将其设置为保存的时间。我已经从该示例中获取了代码并在上面编辑了我的问题。因为它正在添加到当前日期,所以它不能正常工作。我想我对 DateComponents 了解得不够透彻。
标签: ios iphone xcode ipad swiftui