У меня есть два представления ListView и DetailView
ListView:
@EnvironmentObject var userData: UserData
var body: some View {
VStack {
ForEach(userData.packs) { pack in
if pack.added {
NavigationLink(destination: DetailView(packIndex: self.userData.packs.firstIndex(where: { $0.id == pack.id })!)) {
MyRowViewDoesntMatter(pack: pack)
}
}
}
}
.padding(.horizontal)
}
DetailView:
@EnvironmentObject var userData: UserData
var packIndex: Int
VStack {
List {
VStack {
.... some Vies ... doesn't matter
.navigationBarItems(trailing:
THE PROBLEM IS HERE (BELOW)
Button(action: {
self.userData.packs[self.packIndex].added.toggle()
}) {
Image(systemName: self.userData.packs[self.packIndex].added ? "plus.circle.fill" : "plus.circle")
}
...
Проблема заключается в том, что я нажимаю кнопку в навигационных элементах BarItems в DetailView. Свойство «добавлено» в «@EnvironmentObject var userData: UserData» обновляется, и экран пользователя возвращается (в RowView). Я обнаружил, что проблема с EnvironmentObject, потому что данные обновляются и View пытается перерисовать (?), Поэтому он отталкивает меня назад?
Как это исправить? Я хочу остаться на экране DetailView после нажатия кнопки.
PS Мне нужно использовать тип EnvironmentObject, потому что когда я возвращаюсь go, мне нужно видеть результаты.
Спасибо большое много!