在SwiftUI中使用DatePicker创建警报的步骤如下:
import SwiftUI
import UserNotifications
ObservableObject
协议的类,用于管理日期选择和警报的状态:class AlarmManager: ObservableObject {
@Published var selectedDate = Date()
@Published var showAlert = false
func scheduleNotification() {
let content = UNMutableNotificationContent()
content.title = "提醒"
content.body = "该做某事了!"
let triggerDate = Calendar.current.dateComponents([.year, .month, .day, .hour, .minute], from: selectedDate)
let trigger = UNCalendarNotificationTrigger(dateMatching: triggerDate, repeats: false)
let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request)
}
}
struct ContentView: View {
@ObservedObject var alarmManager = AlarmManager()
var body: some View {
VStack {
DatePicker("选择日期和时间", selection: $alarmManager.selectedDate, displayedComponents: [.date, .hourAndMinute])
.datePickerStyle(WheelDatePickerStyle())
.labelsHidden()
Button(action: {
alarmManager.showAlert = true
}) {
Text("设置警报")
.padding()
.background(Color.blue)
.foregroundColor(.white)
.cornerRadius(10)
}
}
.padding()
.alert(isPresented: $alarmManager.showAlert) {
alarmManager.scheduleNotification()
return Alert(title: Text("警报已设置"))
}
}
}
SceneDelegate.swift
文件中设置通知权限:func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { _, _ in }
}
这样,当用户选择日期和时间后,点击"设置警报"按钮,警报将被设置并在指定的日期和时间触发。
领取专属 10元无门槛券
手把手带您无忧上云