There are two variables set by the user. After counting up from 1 to one variable, I want to count up the number from 1 to the other variable.

I want to make a meditation app. There are two variables set by the user. After counting up from 1 to one variable, I want to count up the number from 1 to the other variable.

@AppStorage("exhaleTimer_Value") var exhaleTimerValue = 10
@AppStorage("inhaleTimer_Value") var inhaleTimerValue = 5


// Count up every second
timerHandler = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { _ in
            // Called when the timer is executed
            
            countdownTimer()
        }

func countdownTimer() {
        count += 1

I want it to look like this.

func breath() {
// Count up to the inhalation time set by the user
if count <= inhaleTimerValue {
  // Count up to the time to inhale
} else {
// Since count exceeds the time set by the user, set it to 0.
 count = 0
}

// This time, it counts up to the time you set to exhale.
if count <= exhaleTimerValue {
 // Count up to the time to exhale
} else {
// Since count exceeds the time set by the user, set it to 0.
 count = 0
}
// Count up to the time to inhale
}

What I want to know the most here is how to count up to one variable and then to another variable. If possible, I would be grateful if you could tell me about the process of repeating it.

I would be happy if you could answer.

Answered by Claude31 in 687531022

Did you read the answer to the other thread ?

https://developer.apple.com/forums/thread/689769

What you could do here:

  • create 2 timers
  • when the first finishes, invalidate
  • launch the second timer
    var count1 = 0
    var count2 = 0
    var timer 1= Timer()      
    var timer 2= Timer()      

    @objc func fire1() {
          count1 += 1
          progressLabel1.text = " \(count)"
          if count1 >= exhaleTimerValue { 
             timer1.invalidate()
             timer2 = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(fire2), userInfo: nil, repeats: true)
          }
     }

    @objc func fire2() {
          count2 += 1
          progressLabel2.text = " \(count)"
          if count2>= inhaleTimerValue { timer2.invalidate()}
     }

timer1 = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(fire1), userInfo: nil, repeats: true)

And this time, please answer to the thread to ack if you made it work or not.

Readers would be happy if you could respond to answers or comments.

Accepted Answer

Did you read the answer to the other thread ?

https://developer.apple.com/forums/thread/689769

What you could do here:

  • create 2 timers
  • when the first finishes, invalidate
  • launch the second timer
    var count1 = 0
    var count2 = 0
    var timer 1= Timer()      
    var timer 2= Timer()      

    @objc func fire1() {
          count1 += 1
          progressLabel1.text = " \(count)"
          if count1 >= exhaleTimerValue { 
             timer1.invalidate()
             timer2 = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(fire2), userInfo: nil, repeats: true)
          }
     }

    @objc func fire2() {
          count2 += 1
          progressLabel2.text = " \(count)"
          if count2>= inhaleTimerValue { timer2.invalidate()}
     }

timer1 = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(fire1), userInfo: nil, repeats: true)

And this time, please answer to the thread to ack if you made it work or not.

I see. I will do so from now on. Thank you for your advice😊

There are two variables set by the user. After counting up from 1 to one variable, I want to count up the number from 1 to the other variable.
 
 
Q