Dans SwiftUI List
Semble avoir une propriété appelée ListStyle
.
Comment puis-je changer le style de la liste
struct ListView : View {
var body: some View {
NavigationView {
List(Item.create().identified(by: \.id)){ row in
NavigationButton(destination: DetailsView(item: row)) {
RowView(item: row)
}
}
.listStyle(StaticMember<PlainListStyle.Member>.self) // error here
.foregroundColor(.red)
.navigationBarTitle(Text("List View"))
.statusBar(hidden: false)
}
}
}
Les parties conformes du protocole ListStyle
sont
Cependant, j'ai du mal à essayer de définir un nouveau style pour la liste en l'utilisant comme ceci
.listStyle(StaticMember<PlainListStyle.Member>.self)
J'ai essayé tant de façons, mais chaque style confirmant à ListStyle
est struct, comme ce ne sont pas des valeurs énumérées
Quelqu'un a une idée de comment changer le style de List
?
Erreur dans Xcode
Impossible de convertir la valeur de type 'StaticMember.Type' (alias 'StaticMember> .Type') en type d'argument attendu 'StaticMember <_>'
Utilisation de: .listStyle(StaticMember<PlainListStyle.Member>)
Erreur dans Xcode
Impossible de convertir la valeur de type '(StaticMember) .Type' (alias 'StaticMember> .Type') en type d'argument attendu 'StaticMember <_>'
Utilisation de: .listStyle(StaticMember<PlainListStyle()>)
ou .listStyle(StaticMember<PlainListStyle.self>)
Erreur dans Xcode
'>' n'est pas un opérateur unaire postfix
Apple a déprécié les valeurs d'énumération dans la réponse acceptée et exige maintenant de suivre cette disposition à partir de Xcode 11 beta 5:
.listStyle(GroupedListStyle())
Remarque, cela est soumis à quelques modifications supplémentaires avant de devenir or ....
Autres valeurs disponibles:
PlainListStyle
DefaultListStyle
Après Xcode Beta 5, cette approche est désormais obsolète; maintenant Apple a créé une implémentation de structure pour chaque style. Vous devriez donc faire comme: .listStyle(GroupedListStyle())
. La même approche est appliquée aux autres styles disponibles.
Faites simplement .listStyle(.grouped)
. Pour un autre style de liste, utilisez
.carousel
.default
.plain
.sidebar
Fondamentalement, vous passez juste ListStyle.grouped
à la méthode, mais grâce à Swift vous n'avez pas besoin de spécifier la structure. Chaque membre statique fonctionne de cette façon.
StaticMember
signifie qu'il y a un membre statique dans le protocole ListStyle
. La déclaration est la suivante.
extension StaticMember where Base : ListStyle {
/// A `ListStyle` that implements the system default grouped `List`
/// interaction and appearance.
public static var grouped: GroupedListStyle.Member { get }
}
dans Xcode 11.2.1, la bonne réponse se trouve ci-dessous.
.listStyle(GroupedListStyle())
Conforming Types ->
CarouselListStyle
DefaultListStyle
GroupedListStyle
PlainListStyle
SidebarListStyle
réf: https://developer.Apple.com/documentation/swiftui/liststyle