Значение @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, но когда я попытался, он не работает...

0 ответов

Другие вопросы по тегам