Hello, I want that the user can choose a list from the Reminders app where some should be saved.
Now, I get the Reminder-Lists like this:
func fetchReminderLists() -> [EKCalendar] {
let reminderLists = eventStore.calendars(for: .reminder)
var listFromUser: [EKCalendar] = []
for list in reminderLists {
listFromUser.append(list)
}
return listFromUser
}
In my SwiftUI View, I have a Picker where the Reminder-List should be displayed:
@AppStorage("selected_reminder_list_id") var selectedReminderListId: String = ""
@State private var reminderList: [EKCalendar] = []
Picker(selection: $selectedReminderListId) {
if selectedReminderListId == "" {
Text("No list selected")
ForEach(reminderList, id: \.self) { reminderList in
Text(reminderList.title)
.tag(reminderList.calendarIdentifier)
}
} else {
ForEach(reminderList, id: \.self) { reminderList in
Text(reminderList.title)
.tag(reminderList.calendarIdentifier)
}
}
} label: {
HStack {
Image(systemName: "list.bullet")
.foregroundColor(Color.blue)
.padding(.trailing, 4)
Text("Reminder-Lists")
.bold()
}
}
.onAppear {
reminderList = ReminderManager.shared.fetchReminderLists()
var found = false
for i in 1...reminderList.count {
if reminderList[i - 1].calendarIdentifier == selectedReminderListId {
found = true
break
}
}
if !found {
selectedReminderListId = ""
}
}
Now my question is, how can I listen to changes in the Reminders-App for example when a lists get deleted or added. Also is there a better solution for the Picker?
Thank you for your help!