Значение @Published не проходит через просмотры
Я начинаю со SwiftUI и хотел разработать небольшое простое приложение для практики. У меня проблема со свойством @Published, которое не проходит через представления и поэтому не обновляет представление.
Я объясняю: в первом представлении я вычисляю свойство vMoyenne и обновляю его. Я хотел показать это значение в следующем представлении («Проход»), чтобы иметь возможность использовать его для каких-то других вычислений, но я пробовал много вещей, и значение в представлении «Проход» не обновляется...
Вот код:
ContentView.swift :
struct ContentView: View {
var body: some View {
TabView {
SpeedView().tabItem {
Label("Vitesse", systemImage: "figure.run.circle.fill")
}
PassageView(parameters: Parameters()).tabItem {
Label("Passage", systemImage: "timer.circle.fill")
}
}
}
}
Параметры.swift
class Parameters: ObservableObject {
@Published var distance: Double?
static let units = ["m", "km"]
@Published var unit = 1
@Published var hour: Int = 0
@Published var minute: Int = 0
@Published var second: Int = 0
@Published var vMoyenne = 0.0
@Published var allure = 0.0
@Published var convertedDecimalToSeconds = 0
var time: Int?
...
func calcVMoy() -> Void{
var d = distance!
let t = Double(time!) / 3600
var unite: String {
return Parameters.units[unit]
}
var calc = 0.0
if unite == "km" {
calc = d / t
} else {
d = d / 1000
calc = d / t
}
vMoyenne = calc
}
...
init() {
}
}
**SpeedView.swift**
struct SpeedView: View {
@ObservedObject var parameters = Parameters()
...
...
Button {
showVMoy = true
disableChange = true
if parameters.distance == nil {
parameters.distance = 0
} else {
parameters.runCalc()
}
} label: {
Text("Calculer")
}
... *// Here I can show and see the calculated vMoyenne property without problem...*
...
}
И PassageView.swift , где я хочу показать свойство vMoyenne...
struct PassageView: View {
@ObservedObject var parameters:Parameters
var body: some View {
Text("\(parameters.vMoyenne)") *//want to show the vMoyenne value that we calculate previously but it always show 0,000...*
}
}
Большое спасибо за вашу помощь !!
PS: я пробовал много вещей, таких как использование didSet, но я не понимаю, что я сделал не так... Я нашел какой-то пост в stackoverflow, но когда я попытался, он не работает...