本文介绍了如何存储符合 ListStyle 协议的属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
目前我正在使用 .listStyle(InsetGroupedListStyle())
修饰符设置 listStyle
.
Currently I'm setting the listStyle
with the .listStyle(InsetGroupedListStyle())
modifier.
struct ContentView: View {
var body: some View {
ListView()
}
}
struct ListView: View {
let data = ["One", "Two", "Three", "Four", "Five", "Six"]
var body: some View {
List {
ForEach(data, id: \.self) { word in
Text(word)
}
}
.listStyle(InsetGroupedListStyle())
}
}
我想在 ListView
中创建一个属性来存储 ListStyle
.问题是 ListStyle
是一个协议,我得到:
I want to make a property inside ListView
to store the ListStyle
. The problem is that ListStyle
is a protocol, and I get:
Protocol 'ListStyle' 只能用作通用约束,因为它有自己或相关的类型要求
struct ContentView: View {
var body: some View {
ListView(listStyle: InsetGroupedListStyle())
}
}
struct ListView: View {
var listStyle: ListStyle /// this does not work
let data = ["One", "Two", "Three", "Four", "Five", "Six"]
var body: some View {
List {
ForEach(data, id: \.self) { word in
Text(word)
}
}
.listStyle(listStyle)
}
}
我看了这个问题,但我不知道ListStyle
是什么关联类型
是.
I looked at this question, but I don't know what ListStyle
's associatedtype
is.
推荐答案
你可以使用泛型让你的 listStyle
成为 some ListStyle
类型:
You can use generics to make your listStyle
be of some ListStyle
type:
struct ListView<S>: View where S: ListStyle {
var listStyle: S
let data = ["One", "Two", "Three", "Four", "Five", "Six"]
var body: some View {
List {
ForEach(data, id: \.self) { word in
Text(word)
}
}
.listStyle(listStyle)
}
}
这篇关于如何存储符合 ListStyle 协议的属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!