SwitfUI - таймер не сбрасывается - PullRequest
0 голосов
/ 25 марта 2020

Я прошу прощения, если проблема была решена, но я искал и не мог найти. У меня есть таймер, который отсчитывает от 3 минут, который работает. Проблема в том, что если таймер завершает работу (приложение завершается) и я go возвращаюсь обратно в приложение, время больше не отсчитывается. Приложение должно быть перезапущено для работы таймера.

@State private var timeRemaining = 3
    let timer = Timer.publish(every: 60, on: .main, in: .common).autoconnect()

 Text("\(timeRemaining)")
      .frame(width:40,height: 40)
       .background(Color.red)
       .foregroundColor(Color.white)
       .clipShape(Circle())
       .overlay(Circle().stroke(Color.white,lineWidth: 2))
       .onReceive(timer) {_ in

    if self.timeRemaining > 0 && self.gamePlayStatus == true {
          self.timeRemaining -= 1

    if self.timeRemaining == 2  && self.gamePlayStatus == true {

          self.readTimeRemaining = "\(self.timeRemaining) minutes remaining"
                  ReadSynthWord(word: self.readTimeRemaining)

    } else if self.timeRemaining == 1 {

           self.readTimeRemaining = "\(self.timeRemaining) minute remaining"
                  ReadSynthWord(word: self.readTimeRemaining)

    } else if self.timeRemaining == 0 && self.gamePlayStatus == true {

                  ReadSynthWord(word: "Time is up")

    }

1 Ответ

0 голосов
/ 26 марта 2020

Я проводил дополнительное тестирование и обнаружил, что все, что мне нужно было сделать, это объявить время как переменную @State.

@State private var timeRemaining = 10
@State private var timer = Timer.publish(every: 1,tolerance: 0.5, on: .main, in: .common).autoconnect()

Спасибо за помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...