我有一个列表,其中包含推送视图的行。该视图有另一个列表,它推动另一个视图。原始 List 和第一个推送的 List 会随着数据的变化而更新。但是,最后一个视图在推送时不会更新。当我向后滑动时,视图不再更新,即使它曾经更新过。
HomeView > UserView > ItemView
User 和 Item 是可识别的结构。我试过让它们 Hashable 和 using id: \.self
,但这似乎也不起作用。
class App: ObservableObject {
@Published var users = [User]()
}
struct HomeView {
@EnvironmentObject var app: App
var body {
List {
Section {
ForEach(app.users) { user in
NavigationLink(destination: UserView(user: user)) {
Text(user.name)
}
}
}
}
}
}
// Updates fine when `app.users` updates
// Stops updating after going back from ItemView
struct UserView {
let user: User
var body {
List {
Section {
ForEach(user.items) { item in
NavigationLink(destination: ItemView(user: user, item: item)) {
Text(item.name)
}
}
}
}
}
}
/// Does not update when app.users updates
struct ItemView {
let user: User
let item: Item
var body {
List {
Section {
ForEach(item.details) { detail in
Text(detail)
}
}
}
}
}