首页 > 解决方案 > 如何更改 List 中的 ListStyle

问题描述

在 SwiftUI 中List似乎有一个名为ListStyle.

如何更改列表的样式

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)
    }
  }
}

ListStyle协议的遵守方是

  1. 轮播列表样式
  2. 默认列表样式
  3. 分组列表样式
  4. 纯列表样式
  5. 侧边栏列表样式

但是我正在努力尝试使用它为列表设置新样式

.listStyle(StaticMember<PlainListStyle.Member>.self)

我尝试了很多方法,但是每种样式都确认ListStyle为结构,就像它们不是枚举值一样

任何人都知道如何改变风格List

Xcode 中的错误

无法将类型“StaticMember.Type”(又名“StaticMember>.Type”)的值转换为预期的参数类型“StaticMember<_>”

使用 :.listStyle(StaticMember<PlainListStyle.Member>)

Xcode 中的错误

无法将类型“(StaticMember).Type”(又名“StaticMember>.Type”)的值转换为预期的参数类型“StaticMember<_>”

使用:.listStyle(StaticMember<PlainListStyle()>).listStyle(StaticMember<PlainListStyle.self>)

Xcode 中的错误

'>' 不是后缀一元运算符

标签: iosswiftswiftui

解决方案


从 Xcode 11 beta 5 开始,Apple 需要以下内容如下所述:

.listStyle(GroupedListStyle())

以下是各种样式的细​​分以及它们可以在iOSwatchOS之间使用的位置,以及它们的引入时间。

iOS 和 watchOS

在 iOS 13 和 watchOS 6 中引入:

  • PlainListStyle

  • ListStyle

  • DefaultListStyle

仅限 iOS

在 iOS 13 中引入:

  • GroupedListStyle

iOS 14 引入:

  • InsetGroupedListStyle
  • InsetListStyle
  • SidebarListStyle

这个问题的一些答案还包括特定于 watchOS 的样式,但没有明确标记为这样,尽管问题被标记为 iOS。为了完整...

仅限 watchOS

watchOS 6 引入:

  • CarouselListStyle

watchOS 7 引入:

  • EllipticalListStyle

推荐阅读