【发布时间】:2021-01-30 09:40:54
【问题描述】:
问题概述
我正在构建一个笔记应用程序,并且有一个笔记编辑视图,其中一些 TextEditor 用于听取用户的输入。现在一个环境对象被传递给这个笔记编辑视图,我设计了一个保存按钮来保存更改。它运行良好,只是用户必须单击保存按钮才能更新模型。
预期行为
一旦编辑完成,文本编辑器将更新 EnvironmentObject 实例的值。不一定要点击保存按钮来保存更改。
下面是view的示例代码
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()
}
}
}
下面是EnvironmentObject的edit func的示例代码
UserData.editPost(label: label!, id: id!, data: SingleNote(updateDate: Date(), title: title, body: content))
我尝试过的方法
- 我尝试将 onChange 修饰符添加到 TextEditor,但它会在发生任何更改时立即应用,这是不希望的。我还尝试了其他一些修饰符,例如 onDisapper 等。
- 用户数据有
@Published var NoteList: [String: [SingleNote]],我尝试将 $UserData.NoteList[label][id].title 传递给 TextEditor,但也没有被接受
在互联网上没有找到合理的解决方案,所以在这里提出这个问题。提前感谢您的建议!
【问题讨论】:
标签: swiftui text-editor