如何在计时器运行时在swift中将秒重置为零

时间:2014-11-14 22:07:33

标签: ios swift timer nstimer

大家好我在Swift做了一个简单的计时器。一切都远远超过当秒达到59秒而不是回到零时他们继续前进。有人能够指出我出错的地方以及为什么会这样吗?

这是我的代码: -

class ViewController: UIViewController {

var startTime = NSTimeInterval()
var timer = NSTimer()
var isRunning = false

func updateTime() {

    var currentTime = NSDate.timeIntervalSinceReferenceDate()

    var elapsedTime : NSTimeInterval = currentTime - startTime

    //calculate the minutes in elapsed time

    let minutes = UInt8(elapsedTime / 60.0)
    elapsedTime - (NSTimeInterval(minutes) * 60)

    //calculate the seconds in elapsed time

    let seconds = UInt8(elapsedTime)
    elapsedTime -= NSTimeInterval(seconds)


    //fraction of milliseconds

    let fraction = UInt8(elapsedTime * 100)

    //add the leading zero for minutues, seconds and milliseconds, store
    // as string constants

    let strMinutes = minutes > 9 ? String(minutes): "0" + String(minutes)

    let strSeconds = seconds > 9 ? String(seconds): "0" + String(seconds)

    let strFraction = fraction > 9 ? String(fraction): "0" + String(fraction)

    //concatonate mins, seoncds and milliseconds, assign to UILable timercount

    TimerCount.text = "\(strMinutes):\(strSeconds):\(strFraction)"

}



@IBOutlet weak var TimerCount: UILabel!


@IBAction func StartButton(sender: AnyObject) {

    if !timer.valid {

        let aSelector : Selector = "updateTime"

    timer = NSTimer.scheduledTimerWithTimeInterval(0.01, target: self, selector: aSelector, userInfo: nil, repeats: true)

    startTime = NSDate.timeIntervalSinceReferenceDate()
    }

}


@IBAction func StopButton(sender: AnyObject) {

    timer.invalidate()

}




@IBAction func ResetButton(sender: AnyObject) {

        timer.invalidate()
        TimerCount.text = "00:00:00"

}

1 个答案:

答案 0 :(得分:2)

你有一个简单的错字。

elapsedTime - (NSTimeInterval(minutes) * 60)

应该是:

elapsedTime -= (NSTimeInterval(minutes) * 60)