在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
协议的符合各方是
但是我在努力为列表设置新样式 像这样
.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错误
'>'不是后缀一元运算符
答案 0 :(得分:15)
Apple已弃用了已接受答案中的枚举值,现在要求它从Xcode 11 beta 5开始遵循以下布局:
.listStyle(GroupedListStyle())
注意,在变金之前,还需要进行一些更改。...
其他可用值:
PlainListStyle
DefaultListStyle
答案 1 :(得分:5)
只需.listStyle(.grouped)
。对于其他列表样式,请使用
.carousel
.default
.plain
.sidebar
基本上,您只是将ListStyle.grouped
传递给该方法,但是由于快速类型推断,您无需指定结构。
每个静态成员都以这种方式工作。
StaticMember
表示ListStyle
协议中有一个静态成员。声明就是这个。
extension StaticMember where Base : ListStyle {
/// A `ListStyle` that implements the system default grouped `List`
/// interaction and appearance.
public static var grouped: GroupedListStyle.Member { get }
}
答案 2 :(得分:0)
在Xcode 11.2.1中,正确的答案在下面。
.listStyle(GroupedListStyle())
Conforming Types ->
CarouselListStyle
DefaultListStyle
GroupedListStyle
PlainListStyle
SidebarListStyle
ref:https://developer.apple.com/documentation/swiftui/liststyle