75 votes

SwiftUI NavigationButton sans indicateur de divulgation ?

Lors de la création d'une liste avec une ligne qui pousse vers une nouvelle vue, SwiftUI ajoute automatiquement un indicateur de divulgation ">" ? Comment le supprimer si je ne le veux pas ?

     NavigationView {
        List {
            NavigationButton(destination: DetailView()) {
                ListItem()
            }
        }
        .navigationBarTitle(Text("Some title"))
    }

Sur un UITableViewCell, vous définissez Accessoire sur Aucun, mais comment le faire dans SwiftUI ?

39voto

Manny Points 814

Définir la largeur de NavigationLink et le masquer a fait l'affaire pour moi

 List {
  ForEach(pages) { page in
    HStack {
      Text("Something")

      NavigationLink(destination: Text("Somewhere")) {
        EmptyView()
      }
      .frame(width: 0)
      .opacity(0)
    }
  }
}

28voto

Mike Glukhov Points 49

Swift 5, Xcode 11. ZStack fonctionne parfaitement.

 var body: some View {
    NavigationView {
        List {
            ForEach(viewModel.currenciesViewModel) { cellViewModel in
                ZStack {
                    cellViewModel.makeView()
                    NavigationLink(destination: ChooseCurrencyListView()) {
                        EmptyView()
                    }
                    .buttonStyle(PlainButtonStyle())
                }
            }
        }
        .navigationBarHidden(true)
        .navigationBarTitle("", displayMode: .inline)
    }
}

18voto

Imthath Points 143

Le plus simple. Le contenu de chaque élément de la liste.

 ZStack {
   NavigationLink(destination: DetailView()) {
       EmptyView()
   }.hidden()
   RowView()
}

16voto

Anton Vlasov Points 1150

Comme solution de contournement, je peux suggérer d'ajouter le modificateur .padding comme ceci :

 NavigationView {
        List {
            NavigationButton(destination: DetailView()) {
                ListItem()
            }
        }
        .navigationBarTitle(Text("Some title"))
    }
    .padding(.trailing, -32.0)

Vous obtiendrez donc des lignes sans divulgation visible :

Résultat

7voto

kontiki Points 633

À partir de la version bêta 6, cela fonctionne bien :

 struct SwiftUIView: View {   
    var body: some View {

        NavigationView {
            List {
                HStack {
                    Text("My Cell Content")
                    NavigationLink(destination: Text("destination"), label: {
                        EmptyView()
                    })
                }
            }
        }
    }
}

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