【发布时间】:2021-11-23 14:23:04
【问题描述】:
我在这里尝试做的是使用 NavigationLink 将“KarvonenVal”的值移动到 SummaryView。
struct CalcProcess: View{
@EnvironmentObject var workoutManager: WorkoutManager
@State var NumAdded4 = false
@State var Age:Int
@State var ExerciseIT:Int
@State var ConstantNumber = 220
@State var RHR:Int
@State var KarvonenVal = 1
func karvonen(cn: Int, rhr: Int, age: Int, ei:Double) -> Double {
return Double((cn-age-rhr)) * (ei / 10) + Double(rhr)
}
var body: some View {
let output = karvonen(cn: ConstantNumber, rhr: RHR, age: Age, ei: Double(ExerciseIT))
let roundedDouble = Double(round(1000*output)/1000)
let KarvonenVal: String = String(format: "%.1f", roundedDouble)
VStack{
Text("\(KarvonenVal)")
.foregroundStyle(.black)
}
NavigationLink(destination: SummaryView(NumAdded4: $NumAdded4, KarvonenVal: KarvonenVal), isActive: $NumAdded4, label: {Text("Next")})
}
}
}
struct KarvonenCalc_Previews: PreviewProvider {
static var previews: some View {
KarvonenCalc(KarvonenVal: Int)
}
}
但是,我在“KarvonenCalc_Previews”中不断收到错误消息,显示“无法将 'Int.Type' 类型的值转换为预期的参数类型 'Int'”。我真的被困在这里,无法在 SummaryView 中显示 KarvonenVal。
struct KarvonenCalc_Previews: PreviewProvider {
static var previews: some View {
KarvonenCalc(KarvonenVal: Int)
}
}
同样在 SummaryView_Preview 中,我收到了类似的错误消息“无法将 'String.Type' 类型的值转换为预期的参数类型 'String'”。
struct SummaryView_Previews: PreviewProvider {
static var previews: some View {
SummaryView(NumAdded4: .constant(false), KarvonenVal: String)
}
}
【问题讨论】:
-
您需要提供实际的
Int和String,例如0和"hi"。 -
我明白了。但随后 KarvonenVal 会根据输入值而变化。
-
预览就是这样,一个预览,你可以看到你的用户界面会是什么样子。所以这个值不是那么相关,它是恒定的,不依赖于任何输入。
-
根据命名约定以小写字母开头命名您的变量 - 正如您之前问题的答案中所建议的那样 - 您会立即注意到这个问题。您需要一个常量值而不是类型。这就是错误所说的。
-
离题,但属性和变量名称以小写字母开头,避免局部变量和属性使用相同的名称,这会使代码更难阅读和理解。
标签: swift swiftui swiftui-previews