Podczas nawigowania do nowego widoku z formularzem lub listą (pogrupowane) treść pojawia się około ćwierć drogi od dolnej części tytułu widoku nawigacji, a następnie „wyskakuje” w odpowiednie miejsce około pół sekundy później. Bardzo brzydki. Nie jesteś pewien, czy jest to błąd SwiftUI, czy coś źle konstruuję?
Przetestowałem to na symulatorze i urządzeniu z tymi samymi wynikami.
Myślę, że ma to coś wspólnego ze sposobem obsługi linków nawigacyjnych? Każde łącze nawigacyjne wywołuje init () w widoku docelowym, gdy pojawia się ContentView. Dla mnie nie ma to sensu, czy docelowa init () nie powinna być wywoływana tylko w momencie, gdy użytkownik kliknie link nawigacyjny?
Próbowałem tego również z arkuszem, a problem nie występuje z arkuszami, tylko przy użyciu łączy nawigacyjnych z formularzami lub listami w stylu zgrupowanym.
Kod z nowej aplikacji do pojedynczego widoku:
struct ContentView: View {
var body: some View {
NavigationView {
NavigationLink(destination: TestView()) {
Text("Test Link")
}
.navigationBarTitle("Content View")
}
}
}
struct TestView: View {
var body: some View {
Form {
Text("Test View")
}
.navigationBarTitle("Test View")
}
}
Miałem ten problem z listą, która została wypchnięta przez NavigationLink z listy GroupedListStyle. Gdy to zrobisz, wydaje się, że SwiftUI również traktuje wypchniętą listę jako pogrupowaną. Wystarczy zresetować listStyle powinien działać w tym przypadku:
źródło