如何在SwiftUI List中动态展示所有Service对应的ServiceElementView?
解决方案
你可以用SwiftUI的ForEach遍历month.services数组,动态生成对应的ServiceElementView,替换掉原来手动添加的视图:
var body: some View { NavigationView { List { MonthElementView(month: month) // 遍历所有service生成对应视图 ForEach(month.services) { service in ServiceElementView(service: service) } } } }
注意事项
- 如果你的
Service类型未遵循Identifiable协议,需要在ForEach中指定唯一标识(前提是Service为可哈希的值类型):ForEach(month.services, id: \.self) { service in ServiceElementView(service: service) } - 更规范的做法是让
Service遵循Identifiable协议,这样ForEach能自动识别唯一ID:struct Service: Identifiable { let id = UUID() // 也可以使用业务逻辑中的唯一标识字段 // 其他属性定义 }
修改后,month.services中的每一个Service都会自动对应生成一个ServiceElementView,无需手动逐个添加。
内容的提问来源于stack exchange,提问作者kunass2
相关产品推荐
相关产品推荐

