【问题标题】:How to add 5 seconds to a timer如何将 5 秒添加到计时器
【发布时间】:2015-11-14 14:53:32
【问题描述】:

我正在尝试制作一个显示以下内容的计时器 - 小时:分钟:秒:毫秒。这是我的代码:

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

func updateTime()
{
    var currentTime = NSDate.timeIntervalSinceReferenceDate()
    var elapsedTime : NSTimeInterval = currentTime - startTime

    let hours = UInt8(elapsedTime / 3600.0)
    elapsedTime -= (NSTimeInterval(hours) * 3600)

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

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

    let fraction = UInt8(elapsedTime * 100)

    let strHours = String(format: "%02d", hours)
    let strMinutes = String(format: "%02d", minutes)
    let strSeconds = String(format: "%02d", seconds)
    let strFraction = String(format: "%02d", fraction)

    timeLabel.text = "\(strHours):\(strMinutes):\(strSeconds):\(strFraction)"
}

@IBAction func start(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()
    }
}

如何以另一种方法将 5 秒添加到计时器? (显然我必须创建一个全局var,但我现在尽量保持简单,首先实际添加 5 秒,然后我们会担心全局部分。)我尝试更改/添加以下内容:

var seconds = UInt8(elapsedTime)
seconds += 5 // Error here...
elapsedTime -= NSTimeInterval(seconds)

但我收到一条错误消息:

致命错误:浮点值无法转换为 UInt8 因为它小于 UInt8.min

向计时器添加 5 秒的正确方法是什么?

【问题讨论】:

    标签: ios swift nstimer nstimeinterval uint8t


    【解决方案1】:

    使计时器无效,然后创建一个新计时器。您不能修改定时器的时间间隔。

    就您的错误而言,elapsedTime 可能是负数,这会产生错误。 UInt8.min0

    计时器不是秒表。 NSTimer 在特定时间触发。

    对于秒表之类的东西,您只需设置开始日期即可。然后,您可以使用设置为一秒的计时器来每秒更新一次显示。您将显示当前时间和开始日期之间的差异。

    【讨论】:

    • 感谢您的回答!听起来不错!如何检索原始计时器的值,然后将相同的时间分配给新的计时器,并增加 5 秒?
    • 我很困惑。这不是我在 func updateTime() 的前两行所做的吗?
    猜你喜欢
    • 2014-03-25
    • 2021-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多