gpt4 book ai didi

swift - 无法将类型 'Float' 的值转换为预期的参数类型 'Binding' 错误 Swift 5.2

转载 作者:行者123 更新时间:2023-12-02 00:04:22 27 4
gpt4 key购买 nike

我正在尝试使用 MVVM 模式设计重构我的代码,一切顺利,直到我到达我的项目属性之一,这是一个从 viewModel 文件发布并在 ContentView 文件中观察到的 float ,以显示进度条。我对这个问题的理解非常原始,所以我需要认真的帮助。以下是我项目的 View 和 View 模型文件中与我收到的错误相关的代码部分:

//-----------------------ContentView File

import SwiftUI


struct ContentView: View {
@ObservedObject var quizBrain = QuizBrain()
var body: some View {
VStack {
ProgressBar(barValue: quizBrain.progBarPercentage).frame(height: 35) }
// Here I get this error: Cannot convert value of type 'Float' to expected argument type 'Binding<Float>'

struct ProgressBar: View {
@Binding var barValue: Float
var body: some View {
GeometryReader { geometry in
ZStack(alignment: .leading) {
Rectangle().frame(width: geometry.size.width , height: geometry.size.height)
.opacity(0.3)
.foregroundColor(Color(UIColor.systemTeal))
Rectangle().frame(width: min(CGFloat(self.barValue)*geometry.size.width, geometry.size.width), height: geometry.size.height)
.foregroundColor(Color(UIColor.systemBlue))
.animation(.linear)
}.cornerRadius(45.0)
}
}
}



//--------------------ViewModel File


import Foundation

class QuizBrain: ObservableObject {
@Published var x = 10 //a method generate this Int
@Published var y = 8 //a method generate this Int
@Published var progBarPercentage : Float = 0.0

func progressBarFunc() {
progBarPercentage = Float(y)/Float(x)
}
}

最佳答案

您必须使用 quizBrain 对象的绑定(bind),而不是 progBarPercentage 的 Float 值。

struct ContentView: View {
@ObservedObject var quizBrain = QuizBrain()
var body: some View {
VStack {
ProgressBar(barValue: $quizBrain.progBarPercentage).frame(height: 35)
// Add $ to create a two way binding
}
}
}

关于swift - 无法将类型 'Float' 的值转换为预期的参数类型 'Binding<Float>' 错误 Swift 5.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61104077/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com