Ich habe an einer Anwendung mit Login gearbeitet und nach dem Login sind Kategorien aufgelistet. Und unter jeder Kategorie sind einige Elemente horizontal aufgelistet. Die Sache ist nach dem Login, die Hauptseite erscheint und alles ist großartig aufgelistet. Wenn Sie auf ein Element klicken, wird ein detaillierter Bildschirm angezeigt. Wenn Sie jedoch versuchen, zurückzukehren, stürzt es einfach ab. Ich habe diesen Ablauf gefunden. Warum stürzt meine SwiftUI-App ab, wenn Sie rückwärts navigieren, nachdem Sie einen "NavigationLink" in einem "navigationBarItems" in einer "NavigationView" platziert haben? aber ich konnte mein Problem nicht lösen. Da mein Projekt kompliziert wurde, wollte ich nur schnell die Navigation üben und habe ein neues Projekt erstellt. Übrigens habe ich die neueste xcode Version 11.3 heruntergeladen. Ich habe einen einfachen Code wie folgt geschrieben:
NavigationView{
NavigationLink(destination: Test()) {
Text("Show Detail View")
}
.navigationBarTitle("title1")
Die Ansicht von Test () lautet wie folgt:
import SwiftUI
struct Test: View {
var body: some View {
Text("Hello, World!")
}
}
struct Test_Previews: PreviewProvider {
static var previews: some View {
Test()
}
}
Wie Sie sehen können, ist es wirklich einfach. Ich habe auch ähnliche Beispiele im Internet ausprobiert, aber es funktioniert nicht so, wie es angenommen wird. Wenn ich das Projekt ausführe, klicke ich auf den Navigationslink und er navigiert zur Ansicht Test (). Dann klicke ich auf die Schaltfläche Zurück und es navigiert zur Hauptseite. Wenn ich jedoch das zweite Mal auf den Navigationslink klicke, passiert nichts. Der Navigationslink funktioniert nur einmal und danach passiert nichts mehr. Es navigiert nicht, es wird kein Fehler ausgegeben. Ich bin neu in Swiftui und alles ist großartig, außer der Navigation. Ich habe viele Beispiele ausprobiert und Lösungen im Internet vorgeschlagen, aber nichts scheint meine Probleme zu beheben.
quelle
Antworten:
[UPDATE] 12. Februar 2020 - Ich habe in Xcode 11.4 Beta nach diesem Problem gesucht und festgestellt, dass dieses Problem behoben wurde.
Ich hatte das gleiche Problem auch in meinem Projekt, als ich es im Xcode-Simulator testete. Als ich die App jedoch auf einem realen Gerät (iPhone X mit iOS 13.3) startete,
NavigationLink
funktionierte sie völlig einwandfrei. Es scheint also wirklich ein Fehler von Xcode zu sein.quelle
Simulator 11.4: Dieses Problem wurde behoben
Sie müssen den Standardwert
isActive
in der zweiten Ansicht zurücksetzen . Es funktioniert auf Geräten und Emulatoren.quelle
onDisappear
werde aber aufgerufen, nachdemisActive
es falsch ist, sodass NavigationView nicht richtig funktioniert. Es ist nur eine vorübergehende Lösung für Emulatoren, da NavigationView auf Geräten ordnungsgemäß funktioniert. In früheren Versionen von Emulatoren hat NavigationView funktioniert. Ich hoffe, dass dies in zukünftigen Emulatoren behoben wird.Vermutlich wird dies behoben, wenn Apple den entsprechenden Fehler behebt, der verhindert, dass 13.3 als Bereitstellungsziel ausgewählt werden kann .
Ich habe das gleiche Problem wie alle anderen. Dieses Problem tritt in Simulator und Vorschau unter 13.2 auf, wurde jedoch bei der Bereitstellung auf meinem eigenen Gerät unter 13.3 behoben.
quelle
Da @ Александр Грабовский sagte, es scheint ein Xcode 11.3-Fehler zu sein, stoße ich auf dasselbe Problem. Sie müssen ein Downgrade durchführen oder eine Problemumgehung wie die benutzerdefinierte Zurück-Schaltfläche wie unten verwenden
quelle