Это тестовая модель данных:
class Item: Identifiable {
let name: String
init( n: Int) {
self.name = "\(n)"
}
}
class Storage: ObservableObject {
@Published var items = [Item( n: 1), Item( n: 2)]
func reverse() {
items = self.items.reversed()
}
}
Это мое представление содержимого с NavigationLink
и подробное представление с кнопкой, которая меняет порядок элементов:
struct ContentView: View {
@ObservedObject
var storage = Storage()
var body: some View {
NavigationView {
List {
ForEach( storage.items) { item in
NavigationLink( destination: Button( action: {
self.storage.reverse()
}) {
Text("Reverse")
}) {
Text( item.name).padding()
}
}
}
}
}
}
Теперь, если я нажму на Reverse
, кажется, что NavigationView
или List
теряет свой выбор, всплывает представление и снова нажимает его:
Это ожидаемое поведение или ошибка в SwiftUI? Есть ли обходной путь? Я ожидал, что подробный вид просто останется без перезагрузки.