Context个
我有一个非常基本的SwiftUI设置,其中ListView
表示所有实体,DetailView
表示这些实体中的单个实体.DetailView
还有一个删除选项.
我的问题是,当删除实体时,SwiftUI不会导航回ListView
,即使@FetchRequest
应该更新并重画包括ChildView的视图.相反,它一直显示DetailView
,但由于删除了实体,它只显示其名称的定制实现的缺省值("N/A").
Code个
struct ListView: View {
@FetchRequest(sortDescriptors: []) var entities: FetchedResults<Entity>
var body: some View {
NavigationStack {
ForEach(entities) { entity in
RowView(entity: entity)
}
}
}
}
struct RowView: View {
@ObservedObject var entity: Entity
var body: some View {
NavigationLink(destination: DetailView(entity: entity)) {
Text(entity.name)
}
}
}
struct DetailView: View {
@Environment(\.managedObjectContext) private var context
@ObservedObject var entity: Entity
var body: some View {
VStack {
Text(entity.name)
Button(action: { delete() }) { Text("Delete") }
}
}
private func delete() {
context.delete(entity)
do {
try context.save()
} catch let error as NSError {
print(error)
}
}
}
Question个
- 为什么SwiftUI在删除时不导航回
ListView
,即使@FetchRequest
应该更新?我怎样才能达到这个目标呢?