Я пытаюсь реорганизовать свой код с помощью шаблона MVVM, все идет хорошо, пока я не достиг одного из свойств моего проекта, которое является числом с плавающей точкой, которое публикуется из файла viewModel и наблюдается в файле ContentView, чтобы показать процентную долю от индикатор. Мое понимание по этому вопросу очень примитивно, поэтому мне нужна серьезная помощь. Ниже приведен раздел моего кода из файлов view и viewModel моего проекта, связанных с полученной ошибкой:
//-----------------------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)
}
}