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.
Utilisez un ScrollView?
Un état qui représente votre liste
@State var menuItems: [String] = ["One", "Two", "Three"]
La boucle a SwiftUI
ForEach
dans un ScrollView
ScrollView {
ForEach(self.menuItems, id: \.self) { item in
Text(item)
}
}
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))
}
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))
}
}
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")
}
}