почему мой ObservedObject обновляется, но не показывает его обновленное содержимое в представлении

Я пытаюсь показать простое представление обратного отсчета времени с помощью ObservableObject, но кажется, что мой ObservedObject обновлен, но не отображает его обновленное содержимое в привязанном представлении. Дисплей остается на 60

import SwiftUI
import Combine

class myTimer: ObservableObject {

    @Published var timeRemaining = 60
    var timer: Timer?

    init() {
        timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector (countDownTime), userInfo: nil, repeats: true)
    }

    @objc func countDownTime () {
        if (timeRemaining < 60) {
            timeRemaining -= 1
        }
    }

    func resetCount () {
        timeRemaining = 60
    }
}

struct ContentView: View {

    @ObservedObject var myTimeCount: myTimer = myTimer()

    var body: some View {
        NavigationView{
            VStack {
                Text("Time remaining \(myTimeCount.timeRemaining)")
                    .font(.largeTitle)
                    .fontWeight(.bold)
                    .padding()

                Button(action: resetCount) {
                    Text("Reset Counter")
                }
            }

        }

    }
    func resetCount() {
        myTimeCount.resetCount()
    }
}

введите описание изображения здесь

1 ответ

Вы также можете немного изменить свой init и избавиться от @objc func countDownTime () совсем


    init() {
        timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { [weak self] _ in
            self?.timeRemaining -= 1
        }
    }

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