我有一个问题,其中主窗格列表视图行在iPad中无法正确更新。我已将用于描述目的的代码减少为
struct CarsList : View {
@State var isPresented = false
@FetchRequest(fetchRequest: Car.allCarsFetchRequest())
var cars: FetchedResults<Car>
var body: some View {
NavigationView {
List {
Button("Add Car") {
self.isPresented.toggle()
}
ForEach (self.cars) { car in
VStack {
Text ("List Car name: \(car.name!)")
NavigationLink(destination: CarDetailView(carVM: CarViewModel(car: car)) ) {
CarRowView(car: car)
}
}
}
}
}
.sheet(isPresented: $isPresented, onDismiss: { }, content: {
CarDetailView(carVM: CarViewModel())
})
}
}
iPad左窗格显示汽车名称(CoreData管理的对象)列表。出于测试目的,我两次显示该名称-在Text(“列出汽车名称...”)中,然后在CarRowView中再次显示该名称。 CarRowView有car:Car声明为ObservedObject。 我可以点击一行进入详细视图,在这里我可以更改汽车名称。当我这样做时,列表会更新,因为Text(“列表汽车名称...”)显示了新名称,但CarRowView并未更改。 因此,在详细信息窗格中更改“ car”后,立即在列表中显示(以Text(“ List car name ..”))显示,即使该汽车对象被发送到CarRowView(它是一个ObservedObject),CarRowView显示不变。 该应用程序使用CloudKit,在进行更改后,新名称在运行相同代码的iPhone(在CarRowView中)上显示为正常。有什么想法为什么CarRowView无法在iPad的主窗格上更新?
答案 0 :(得分:0)
这似乎是一个SwiftUI错误,而不是代码问题,因为它现在可以与13.3一起使用。