web-dev-qa-db-fra.com

Comment supprimer les séparateurs de ligne d'une liste dans SwiftUI sans utiliser ForEach?

J'ai ce code pour afficher une liste de lignes personnalisées.

struct ContentView : View {
    var body: some View {
        VStack(alignment: .leading) {
            List(1...10) {_ in
                CustomRow()
            }
        }
    }
}

Cependant, je veux supprimer la ligne sur chaque ligne. J'ai essayé de ne pas utiliser List et d'utiliser à la place ForEach dans ScrollView mais cela supprime complètement tout le style, y compris son rembourrage et ses marges. Je veux juste supprimer les lignes et rien d'autre.

Veuillez aider, merci.

37
grey

Utilisez un ScrollView?

Un état qui représente votre liste

@State var menuItems: [String] = ["One", "Two", "Three"]

La boucle a SwiftUIForEach dans un ScrollView

ScrollView {
    ForEach(self.menuItems, id: \.self) { item in
        Text(item)
    }
}
0
Jon Vogel

En plus de la réponse de @Mojtaba Hosseini, voici comment vous cachez les séparateurs supplémentaires sous la liste inclus le dernier:

init() {
    UITableView.appearance().tableFooterView = UIView(frame: CGRect(x: 0, y: 0, width: 0, height: 1))
}
0
Cinn
  1. Essayez d'insérer .listRowInsets (EdgeInsets (haut: 5, début: 5, bas: 5, fin: 5)) pour ajouter un remplissage aux lignes et vous pouvez les styliser dans VSTack.

     struct ContentView : View {
      var body: some View {
      VStack(alignment: .leading) {
          List(1...10) {_ in
            CustomRow()
       }
        }
        .listRowInsets(EdgeInsets(top: 5, leading: 5, bottom: 5, trailing: 5))
      }
      }
    
  2. La deuxième approche est la suivante: (également si vous devez passer la liaison, vous pouvez voir ci-dessous, sinon ignorer la valeur passée enableNext).

    struct ContentView : View { 
    @State var enableNextState: Bool = false
         var body: some View {
             VStack(alignment: .leading) {
                  List(1...10) {_ in
                      CustomRow(enableNext: enableNextState )
                      }
                    }
                   }
                }
    
          struct CustomRow: View {
               @Binding var enableNext: Bool
    
                init(enableNext: Binding<Bool>) {
                    self._enableNext = enableNext
                    UITableView.appearance().separatorColor = .clear
    
                  }
    
                  var body: some View {
                    Text("ROW DATA")
                  }
                }
    
0
zdravko zdravkin