首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何存储符合ListStyle协议的属性

如何存储符合ListStyle协议的属性
EN

Stack Overflow用户
提问于 2020-10-18 22:21:35
回答 1查看 94关注 0票数 1

目前,我正在用listStyle修饰符设置.listStyle(InsetGroupedListStyle())

代码语言:javascript
复制
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是一种协议,我得到:

协议'ListStyle‘只能用作泛型约束,因为它具有自或关联的类型要求

代码语言:javascript
复制
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)
    }
}

我看了这个question,但我不知道ListStyleassociatedtype是什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-18 22:24:11

您可以使用泛型使您的listStyle成为某种ListStyle类型:

代码语言:javascript
复制
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)
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64418888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档