我在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的主窗格上更新?
看起来像是SwiftUI错误,而不是代码问题,因为它现在可以与13.3一起使用。