web-dev-qa-db-fra.com

Comment changer ListStyle dans List

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

  1. CarouselListStyle
  2. DefaultListStyle
  3. GroupedListStyle
  4. PlainListStyle
  5. SidebarListStyle

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

12
Mohmmad S

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

16
CodeBender

Mise à jour pour Xcode Beta 5 et nexts

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.

Ancienne implémentation pour la pré bêta 5

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 }
}
8
Rico Crescenzio

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

1
Zgpeace