почему мой 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
}
}