Je travaillais sur une application avec connexion et après la connexion, des catégories sont répertoriées. Et sous chaque catégorie, certains éléments sont répertoriés horizontalement. La chose est après la connexion, la page principale apparaît et tout est répertorié. Lorsque vous cliquez sur un élément, il passe à l'écran détaillé, mais lorsque vous essayez de revenir en arrière, il se bloque simplement. J'ai trouvé ce flux Pourquoi mon application SwiftUI se bloque-t-elle lors de la navigation vers l'arrière après avoir placé un `NavigationLink` à l'intérieur d'un` navigationBarItems` dans un `NavigationView`? mais je n'ai pas pu résoudre mon problème. Depuis que mon projet est devenu compliqué, je voulais juste pratiquer la navigation dans swiftui et j'ai créé un nouveau projet. Au fait, j'ai téléchargé la dernière version de xcode 11.3. J'ai écrit un code simple comme suit:
NavigationView{
NavigationLink(destination: Test()) {
Text("Show Detail View")
}
.navigationBarTitle("title1")
Et la vue Test () est la suivante:
import SwiftUI
struct Test: View {
var body: some View {
Text("Hello, World!")
}
}
struct Test_Previews: PreviewProvider {
static var previews: some View {
Test()
}
}
Comme vous pouvez le voir, c'est vraiment simple. J'ai également essayé des exemples similaires sur Internet, mais cela ne fonctionne pas comme il le suppose. Lorsque j'exécute le projet, je clique sur le lien de navigation et il accède à la vue Test (). Ensuite, je clique sur le bouton retour et il accède à la page principale. Cependant, lorsque je clique sur le lien de navigation une deuxième fois, rien ne se produit. Le lien de navigation ne fonctionne qu'une seule fois et après cela, rien ne se passe. Il ne navigue pas, il ne jette aucune erreur. Je suis nouveau sur swiftui et tout est super mais la navigation. J'ai essayé de nombreux exemples et suggéré des solutions sur Internet, mais rien ne semble résoudre mes problèmes.
la source
Réponses:
[MISE À JOUR] 12 février 2020 - J'ai vérifié ce problème dans la version bêta de Xcode 11.4 et j'ai constaté que ce problème avait été résolu.
J'obtenais le même problème dans mon projet aussi, quand je le testais dans le simulateur de Xcode. Cependant, lorsque j'ai lancé l'application sur un appareil réel (iPhone X avec iOS 13.3), cela
NavigationLink
fonctionnait parfaitement. Donc, cela ressemble vraiment au bogue de Xcode.la source
Simulator 11.4: ce problème a été corrigé
Vous devez réinitialiser la
isActive
valeur par défaut dans la deuxième vue. Il fonctionne sur les appareils et les émulateurs.la source
onDisappear
sera appelé aprèsisActive
est faux, donc NavigationView ne fonctionnera pas correctement. C'est une solution temporaire pour les émulateurs uniquement parce que NavigationView fonctionne correctement sur les appareils. Dans les versions précédentes des émulateurs, NavigationView fonctionnait, j'espère qu'il sera corrigé dans le futur émulateur.Vraisemblablement, cela sera résolu lorsque Apple corrigera le bogue connexe qui empêche la sélection de 13.3 comme cible de déploiement .
Je rencontre le même problème que tout le monde. Ce problème est présent dans le simulateur et l'aperçu exécutant la version 13.2, mais il est résolu lors du déploiement sur mon propre appareil exécutant la version 13.3.
la source
Comme @ Александр Грабовский a dit que cela ressemble à un bogue Xcode 11.3, je rencontre le même problème, vous devez rétrograder ou utiliser une solution de contournement comme le bouton de retour personnalisé comme ci-dessous
la source