Ios 无法在Swift中循环通过计数器
我有一个工作倒计时计时器,我可以手动设置并从这个值倒计时 我现在想要实现的是,将我的间隔计数器设置为3,然后循环倒计时计时器,循环我在计数器中设置的次数,当最后一个间隔完成时,计时器完成 听起来很简单,我知道我在某处需要一个循环,但我所尝试的一切都已经成功了,这是我在添加循环之前的当前代码。尝试添加while语句而不是if语句,但没有成功 我现在添加了这个循环,但仍然没有乐趣。有人知道怎么做吗Ios 无法在Swift中循环通过计数器,ios,objective-c,iphone,loops,swift,Ios,Objective C,Iphone,Loops,Swift,我有一个工作倒计时计时器,我可以手动设置并从这个值倒计时 我现在想要实现的是,将我的间隔计数器设置为3,然后循环倒计时计时器,循环我在计数器中设置的次数,当最后一个间隔完成时,计时器完成 听起来很简单,我知道我在某处需要一个循环,但我所尝试的一切都已经成功了,这是我在添加循环之前的当前代码。尝试添加while语句而不是if语句,但没有成功 我现在添加了这个循环,但仍然没有乐趣。有人知道怎么做吗 func runIntervalTimer() { timerForIntervals = NSTi
func runIntervalTimer() {
timerForIntervals = NSTimer.scheduledTimerWithTimeInterval(1, target: self,
selector: Selector("updateTimeInterval"), userInfo: nil, repeats: true)
}
func updateTimeInterval() {
do {
if intervalCountdown > 0 {
intervalHasBeenSet = true
intervalCountdown--
IntervalTimer.text = String(format: "%02d:%02d", intervalCountdown/60,
intervalCountdown%60) }
} while intervalHasBeenSet == true
intervalHasBeenSet = false
intervalCountdown = 0
IntervalTimer.text = String(format: "%02d:%02d", intervalCountdown/60,
intervalCountdown%60)
}
@IBAction func InterValTimerIncrease(sender: AnyObject) {
intervalCountdown++
IntervalTimer.text = String(format: "%02d:%02d", intervalCountdown/60,
intervalCountdown%60)
}
@IBAction func IntervalTimerDecrease(sender: AnyObject) {
intervalCountdown--
IntervalTimer.text = String(format: "%02d:%02d", intervalCountdown/60,
intervalCountdown%60)
}
@IBAction func IntervalStart(sender: AnyObject) {
runIntervalTimer()
}
您可能处于无限循环中:
do {
if intervalCountdown > 0 {
intervalHasBeenSet = true
intervalCountdown--
IntervalTimer.text = String(format: "%02d:%02d", intervalCountdown/60,
intervalCountdown%60) }
} while intervalHasBeenSet == true
您的条件是intervalHasBeenSet==true
,但在循环中它从未被设置为false,因此它永远无法退出
如果你想让计时器倒计时,我想你需要做的就是:
func updateTimeInterval() {
println(intervalCountdown)
if intervalCountdown > 0 {
intervalCountdown--
IntervalTimer.text = String(format: "%02d:%02d", intervalCountdown/60,
intervalCountdown%60)
}
}
由于NSTimer
应在每个间隔调用updateTimeInterval
,因此此函数中不需要循环
要使计时器倒计时多次,需要一个额外的变量(intervalNum
):
感谢您的回答,在我添加循环之前,它实际上已经设置为您的代码,当计数器归零时,它所做的只是停止,间隔计数器没有减少或计时器再次启动。还有其他想法吗?我更新了我的帖子,加入了日志声明。当你点击增加和减少功能时,值会说什么?当计时器达到零时,你实际需要发生什么?不用担心,我只需要将间隔减少1,然后计时器从之前设置的开始重新启动。当间隔为零时,计数器停止。它基本上只是一个间歇健身教练。例如,我可以设置5个间隔20秒,20秒完成我们转到4秒,20秒完成,我们转到3秒等我知道我差一点似乎做不好太好了谢谢我很快就要回来了,我会试一试,让你知道是怎么回事:-)
func updateTimeInterval() {
println(intervalCountdown)
if intervalCountdown > 0 && intervalNum > 0 {
// countdown in the current interval
intervalCountdown--
IntervalTimer.text = String(format: "%02d:%02d", intervalCountdown/60,
intervalCountdown%60)
}
else
{
// move on to the next interval
intervalNum--
intervalCountdown = 20 // or grab the original value from somewhere
}
if (intervalNum == 0)
{
// stop the timer
timerForIntervals.invalidate()
}
}