web-dev-qa-db-fra.com

SwiftUI: NavigationLink ne fonctionne pas s'il ne figure pas dans une liste

Je suppose que ce pourrait être un bogue dans la version bêta 3 car la NavigationView est tout cassée. Mais une vue comme ça:

struct GenreBadge : View {
    @EnvironmentObject var store: Store<AppState>
    let genre: Genre

    var body: some View {
        NavigationLink(destination: MoviesGenreList(genre: genre).environmentObject(store)) {
            RoundedBadge(text: genre.name)
        }
    }
}

ne déclenche aucun Push dans la pile de navigation. La vue ne semble pas du tout interactive. Si quelqu'un trouve une solution de contournement, ce serait bien, à moins que Apple documente ce comportement, je le considérerais comme cassé jusqu'à la bêta 4.

8
Dimillian

Il semble y avoir un bug avec le lien de navigation dans Xcode version 11.3 (11C29) que j'ai signalé à Apple.

Remarque: Ce problème n'apparaît que dans le simulateur. Il fonctionne très bien sur un appareil réel. Merci à @djr

Le code ci-dessous fonctionne comme prévu la première fois que vous utilisez le lien de navigation. Malheureusement, il ne répond plus la deuxième fois.

import SwiftUI

struct ContentView : View {
    var body: some View {
        NavigationView {
            VStack {
                NavigationLink(destination: SomeView()) {
                    Text("Hello!")
                }
            }
        }
    }
}

struct SomeView: View {
    var body: some View {
        Text("Detailed View")
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
18
Aaron A

Êtes-vous réellement dans un NavigationView? Les œuvres suivantes. Mais si j'ai raté votre propos, vous pouvez peut-être partager un peu plus de code.

import SwiftUI

struct ContentView : View {
    var body: some View {
        NavigationView {
            VStack {
                NavigationLink(destination: SomeView()) {
                    Text("Go!")
                }
            }
        }
    }
}

struct SomeView: View {
    var body: some View {
        Text("Detailed View Here!")
    }
}
7
kontiki

Essaye ça:-

var body: some View {
        NavigationView {
            NavigationButton(destination: YourView()) {
                Text("Go!")
            }
        }
    }
2
Hussain Shabbir

NavigationLink

Un bouton qui déclenche une présentation de navigation lorsqu'il est pressé. Il s'agit d'un remplacement pour pushViewController

NavigationView {
    NavigationLink(destination:
        Text("Detail")
        .navigationBarTitle(Text("Detail"))
    ) {
        Text("Push")
    }.navigationBarTitle(Text("Master"))
}

Ou rendez-le plus lisible en utilisant la destination du groupe dans sa propre vue DetailView

NavigationView {
    NavigationLink(destination: DetailView()) {
        Text("Push")
    }.navigationBarTitle(Text("Master"))
}
1
Ekambaram E