Pracowałem nad aplikacją z logowaniem, a po zalogowaniu pojawiają się kategorie. W każdej kategorii znajdują się niektóre pozycje wymienione w poziomie. Rzecz jest po zalogowaniu, pojawia się strona główna i wszystko jest wymienione świetnie. Kliknięcie elementu powoduje przejście do szczegółowego ekranu, ale próba powrotu powoduje awarię. Znalazłem ten przepływ Dlaczego moja aplikacja SwiftUI ulega awarii podczas nawigowania wstecz po umieszczeniu `NavigationLink` wewnątrz` navigationBarItems` w `NavigationView`? ale nie mogłem rozwiązać mojego problemu. Ponieważ mój projekt stał się skomplikowany, chciałem po prostu ćwiczyć nawigację w swiftui i stworzyłem nowy projekt. Nawiasem mówiąc, pobrałem najnowszą wersję xcode 11.3. Napisałem prosty kod w następujący sposób:
NavigationView{
NavigationLink(destination: Test()) {
Text("Show Detail View")
}
.navigationBarTitle("title1")
Widok Test () jest następujący:
import SwiftUI
struct Test: View {
var body: some View {
Text("Hello, World!")
}
}
struct Test_Previews: PreviewProvider {
static var previews: some View {
Test()
}
}
Jak widać, jest to naprawdę proste. Próbowałem również podobnych przykładów w Internecie, ale nie działa tak, jak powinien. Kiedy uruchamiam projekt, klikam łącze nawigacyjne i przechodzi do widoku Test (). Następnie klikam przycisk Wstecz i przechodzi do strony głównej. Jednak po drugim kliknięciu łącza nawigacyjnego nic się nie dzieje. Łącze nawigacyjne działa tylko raz, a potem nic się nie dzieje. Nie nawiguje, nie rzuca żadnych błędów. Jestem nowy w swiftui i wszystko jest świetne oprócz nawigacji. Próbowałem wielu przykładów i sugerowałem rozwiązania w Internecie, ale nic nie wydaje się rozwiązać moich problemów.
źródło
Odpowiedzi:
[AKTUALIZACJA] 12 lutego 2020 r. - Sprawdziłem ten problem w Xcode 11.4 w wersji beta i stwierdziłem, że problem został rozwiązany.
Ten sam problem występował również w moim projekcie, gdy testowałem go w symulatorze Xcode. Jednak kiedy uruchomiłem aplikację na prawdziwym urządzeniu (iPhone X z iOS 13.3),
NavigationLink
działało zupełnie dobrze. Naprawdę wygląda to na błąd Xcode.źródło
Symulator 11.4: Ten problem został rozwiązany
Musisz zresetować
isActive
wartość domyślną w drugim widoku. Działa na urządzeniach i emulatorach.źródło
onDisappear
zostanie wywołany poisActive
false, więc NavigationView nie będzie działał poprawnie. Jest to tymczasowe rozwiązanie dla emulatorów tylko dlatego, że NavigationView działa poprawnie na urządzeniach. W poprzednich wersjach emulatorów nawigacja działała Mam nadzieję, że zostanie to naprawione w przyszłym emulatorze.Przypuszczalnie zostanie to rozwiązane, gdy Apple naprawi powiązany błąd, który uniemożliwia wybranie 13.3 jako celu wdrożenia .
Mam taki sam problem jak wszyscy inni. Ten problem występuje w symulatorze i wersji zapoznawczej z systemem 13.2, ale został rozwiązany podczas wdrażania na moim urządzeniu z systemem 13.3.
źródło
Ponieważ @ Александр Грабовский powiedział, że to wygląda jak błąd Xcode 11.3, napotykam ten sam problem, musisz obniżyć wersję lub użyć obejścia, takiego jak niestandardowy przycisk powrotu, jak poniżej
źródło