4 votes

Comment pouvez-vous avoir d'autres zones sélectionnables dans une ligne de liste avec NavigationLink?

Je ne parviens pas à rendre une ligne sélectionnable pour autre chose que la navigation, s'il y a également un NavigationLink dans la vue de la ligne. Ce n'est pas un problème avec UIKit. Est-ce impossible en raison d'un manque d'implémentation actuel, juste un bug, ou est-ce en fait actuellement possible?

Ceci est probablement le snippet le plus simple qui peut illustrer le problème.

struct ContentView: View {
  var body: some View {
    NavigationView {
      List {
        HStack {
          Button("Comment puis-je cliquer ici sans effectuer de transition?") { }
          NavigationLink( destination: ContentView() ) {
            Spacer()
          }
        }
      }
    }
  }
}

2voto

Asperi Points 123157

Votre bouton ne devrait pas être de style par défaut.

Voici une démo simple d'une approche possible. Préparé et testé avec Xcode 11.7 / iOS 13.7

demo

struct ContentView: View {
    @State private var selected = false
    var body: some View {
        NavigationView {
            List {
                HStack {
                    Button(action: { self.selected.toggle() }) {
                        Image(systemName: selected ? "checkmark.circle" : "circle")
                    }.buttonStyle(PlainButtonStyle())
                    .padding(.horizontal)

                    NavigationLink( destination: Text("Détails") ) {
                        Text("Lien")
                            .frame(maxWidth: .infinity, alignment: .leading)
                    }
                }
            }
        }
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X