1 Reply
      Latest reply on Nov 17, 2019 12:32 PM by Jim Dovey
      kdion4891 Level 1 Level 1 (0 points)

        In my app I have a master `ContentView` which uses a `FetchRequest` in order to grab entities:

         

            struct ContentView: View {
                @Environment(\.managedObjectContext) var managedObjectContext
                @FetchRequest(
                    entity: Note.entity(),
                    sortDescriptors: [
                        NSSortDescriptor(key: "title", ascending: true, selector: #selector(NSString.caseInsensitiveCompare))
                    ]
                ) var notes: FetchedResults

         

        Then I spit them out in a loop like so:

         

         

            NavigationView {
                List {
                    ForEach(notes, id: \.self) {note in
                        NavigationLink(destination: NoteDetailView(note: note), label: {

         

        In my `NoteDetailView`, I use the `note` to display its details:

         

            struct NoteDetailView: View {
                var note: Note

         

        I also have another view which handles editing the `Note`:

         

            struct EditNoteView: View {
                var note: Note
                @Environment(\.managedObjectContext) var managedObjectContext
                @State var noteTitle: String = ""
                @State var noteType: String = "Note"
                @State var noteColor: String = "None"

         

        This `EditNoteView` will make changes to a `Note` then save it:

         

            func saveNote() {
                noteTitle = noteTitle.trimmingCharacters(in: .whitespacesAndNewlines)
               
                if (noteTitle.count > 0) {
                    note.title = noteTitle
                    note.type = noteType
                    note.color = noteColor
                    note.dateUpdated = Date()
                   
                    do {
                        try managedObjectContext.save()
                    } catch {
                        print(error)
                    }
                }
            }

         

        The user can open this `EditDetailView` from either the master view (`ContentView`) or the detail view (`NoteDetailView`).

         

        Now I've read up on this and it appears I have the opposite problem of some other people. Most people seem to have a problem updating the master from the detail view. When I call `EditNoteView` from the `NoteDetailView` and make changes it updates both the `ContentView` and then `NoteDetailView` with the changes perfectly.

         

        However, when I call `EditNoteView` from the `ContentView` and make changes it only updates the `ContentView` and not the `NoteDetailView`.

         

        I should mention that this is a catalyst app and I only notice this problem on devices that show the master view as a sidebar (Mac & iPad). I'm guessing it is because when I am making edits from the master view, the detail view is not "active" and therefore it doesn't think it needs to update? I'm not sure how to fix this.