Вы можете использовать UserDefaults
, чтобы сохранить объект Date
между запусками приложения.Вам просто нужно убедиться, что вы сохранили недавно выбранный объект Date
в scheduleButton
и загрузили значение из UserDefaults
в viewDidLoad
, чтобы установить в качестве даты по умолчанию для вашего средства выбора.
Вы можете найти описанное решение, реализованное для timeDatePicker
, но если оно вам также нужно для timeDatePickerSecond
, просто создайте для него другое свойство Date?
и аналогичным образом реализуйте его, но убедитесь, что для этого используется другой ключ UserDefaults
второе свойство.
import UIKit
import UserNotifications
class Notifications: UIViewController, UNUserNotificationCenterDelegate {
@IBOutlet weak var scheludeMeal: UIButton!
@IBOutlet weak var timeDatePicker: UIDatePicker!
@IBOutlet weak var timeDatePickerSecond: UIDatePicker!
var savedNotificationDate: Date? {
get {
return UserDefaults.standard.object(forKey: "notificationDate") as? Date
}
set {
UserDefaults.standard.set(newValue, forKey: "notificationDate")
}
}
override func viewDidLoad() {
super.viewDidLoad()
if let savedNotificationDate = savedNotificationDate {
timeDatePicker.date = savedNotificationDate
}
let center = UNUserNotificationCenter.current()
center.requestAuthorization(options: [.alert, .badge, .sound]) { (granted, error) in
if granted {
print("Yes!")
} else {
print("No...?")
}
}
}
@IBAction func scheludeButton(_ sender: Any) {
let center = UNUserNotificationCenter.current()
center.removeAllPendingNotificationRequests()
let content = UNMutableNotificationContent()
content.title = "Notification!"
content.body = "Description of notification :)"
content.sound = UNNotificationSound.default
let dateComponent = timeDatePicker.calendar.dateComponents([.hour, .minute], from: timeDatePicker.date)
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponent, repeats: true)
let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger)
center.add(request)
savedNotificationDate = timeDatePicker.date
let dateComponentSd = timeDatePickerSecond.calendar.dateComponents([.hour, .minute], from: timeDatePickerSecond.date)
let trigger2 = UNCalendarNotificationTrigger(dateMatching: dateComponentSd, repeats: true)
let request2 = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger2)
center.add(request2)
}
}