为什么SwiftUI ObservedObject在列表行中不起作用?

问题描述 投票:0回答:1

我在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 master-detail combine swiftui-list
1个回答
0
投票

看起来像是SwiftUI错误,而不是代码问题,因为它现在可以与13.3一起使用。

© www.soinside.com 2019 - 2024. All rights reserved.