SwiftUI:从其他组件提供for循环上限
Posted
技术标签:
【中文标题】SwiftUI:从其他组件提供for循环上限【英文标题】:SwiftUI: provide for loop upper limit from other component 【发布时间】:2020-02-03 13:55:14 【问题描述】:我的问题如下,我有一个产品视图,我在其中加载到视图数据,我需要添加基于星级系统的评级显示。
呼叫:
var rating = 4.22
RatingView(rating)
输入:我有双重格式的评分,我将这些数据提供给 RatingView。
输出:它基本上是一个基于提供相同数量的星数的楼层函数
问题:问题是无论我使用 for 还是 forEach 循环,我总是会出错。 我尝试了以下几种方式:
HStack(alignment: .center, spacing: 5)
ForEach(Int(rating), id: \.self) _ in
Image(systemName: "star.fill")
.font(.system(size: 8, weight: .regular))
.foregroundColor(Color.yellow)
出现错误:无法将 '() -> some View' 类型的值转换为预期的参数类型 '() -> _'
或
HStack(alignment: .center, spacing: 5)
for index in 0..<Int(rating)
Image(systemName: "star.fill")
.font(.system(size: 8, weight: .regular))
.foregroundColor(Color.yellow)
出现错误:包含控制流语句的闭包不能与函数生成器“ViewBuilder”一起使用
我真的不知道如何更改循环,以便它可以显示需要的内容......
【问题讨论】:
你试过四舍五入吗? developer.apple.com/documentation/swift/double/2884722-round 舍入不是问题,因为从 double 到 int 的转换几乎相同。我在一段时间内迭代时遇到错误。 【参考方案1】:ForEach
需要排序数据或范围,因此您需要类似以下内容(不考虑您如何四舍五入您的评分)
ForEach(0..<Int(rating), id: \.self) _ in
【讨论】:
以上是关于SwiftUI:从其他组件提供for循环上限的主要内容,如果未能解决你的问题,请参考以下文章
在 SwiftUI 中使用 For 循环获取 Firebase 数据