у меня такая структура
contentView {
navigationView{
foreach {
NavigationLink(ViewA(id: id))
}
}
}
/// где View A содержит триггер запроса в представлении Appear
struct ViewA: View {
@State var filterString: String = ""
var id: String!
@ObservedObject var model: ListObj = ListObj()
init(id: String) {
self.id = id
}
var body: some View {
VStack {
SearchBarView(searchText: $filterString)
List {
ForEach(model.items.filter({ filterString.isEmpty || $0.id.contains(filterString) || $0.name.contains(filterString) }), id: \.id) { item in
NavigationLink(destination: ViewB(id: item.id)) {
VStack {
Text("\(item.name) ")
}
}
}
}
}
.onAppear {
self.model.getListObj(id: self.id) //api request, fill data and call objectWillChange.send()
}
}
}
}
ViewB имеет тот же код, что и ViewB, идентификатор получения, хранилище и API запроса для сбора данных.
Но список viewB не обновляется. я также заметил ViewB's
@ObservedObject var model: model = model()
был создан несколько раз
Отлаживая, я обнаружил, что каждый объект navigationLink создает его пункт назначения еще до того, как он сработал. обычно это не проблема,
но в моем случае я чувствую, что модель ViewB создается 2 раза, и мой onApear вызывает неправильный, причина, по которой self.objectWillChange.send () не обновляет мое представление