Post

Replies

Boosts

Views

Activity

Need suggestions on publisher autosave solutions
Background I am building a note taking app and there is a note editing view where a few SwiftUI TextEditors are used to listen to users' input. Right now an environment object is passed to the this note editing view and I designed a save button to save the change. It works well except that users have to click the save button to update the model. The function is exactly like what Apple has done with the native note app. Expected behaviors The text editor is expected to update the value of instances of the EnvironmentObject once any editing happens. Do not necessarily click the save button to save the changes. Sample code swift struct NoteDetails: View { @EnvironmentObject var UserData: Notes @Binding var selectedNote: SingleNote? @Binding var selectedFolder: String? @Binding var noteEditingMode: Bool @State var title:String = "" @State var updatedDate:Date = Date() @State var content: String = "" var id: Int? var label: String? @State private var wordCount: Int = 0 var body: some View { VStack(alignment: .leading) { TextEditor(text: $title) .font(.title2) .padding(.top) .padding(.horizontal) .frame(width: UIScreen.main.bounds.width, height: 50, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/) Text(updatedDate, style: .date) .font(.subheadline) .padding(.horizontal) Divider() TextEditor(text: $content) .font(.body) .lineSpacing(15) .padding(.horizontal) .frame(maxHeight:.infinity) Spacer() } } } Below is the sample code of edit func of the EnvironmentObject swift UserData.editPost(label: label!, id: id!, data: SingleNote(updateDate: Date(), title: title, body: content)) Ways I have tried without luck I tried to add a onChange modifier to the TextEditor but it applies as soon as any change happens, which is not desired. I also tried a few other modifiers like onDisapper etc. User data has @Published var NoteList: [String: [SingleNote]] and I tried to pass the $UserData.NoteList[label][id].title in to the TextEditor and it was not accepted either Did not find sound solutions in the Internet so bring up this question here. Thanks for suggestions in advance!
7
0
513
Feb ’21