ios - Swift:打开 ViewController 后如何启动 NSTimer

标签 ios swift nstimer

我的 Storyboard是这样的: MainNavViewController --> TimerViewController

TimeViewController 包含 NSTimer 和管理它的代码。

一旦 TimerViewController 打开,NSTimer 应该自动开始倒计时。

计时器应该从 02:00 分钟倒计时到 00:00。

计时器仅在上述ViewController中需要,在下一个或之前的ViewController中不需要。

目前,我有以下代码:

var timer = NSTimer()
let timeInterval:NSTimeInterval = 0.05
let timerEnd:NSTimeInterval = 0.0
var timeCount:NSTimeInterval = 120.0

func timerDidEnd(timer:NSTimer){
    timeCount = timeCount - timeInterval
    if timeCount <= 0 {
    TimerLabel.text = "Time's Up!"
    timer.invalidate()
    }
}

func timeString(time:NSTimeInterval) -> String {
    let minutes = Int(time) / 60
    let seconds = time - Double(minutes) * 60
    return String(format:"%02i:%02i",minutes,Int(seconds))
}

func StartTimer() { // Function called in viewDidLoad
    if !timer.valid{
    TimerLabel.text = timeString(timeCount)
    timer = NSTimer.scheduledTimerWithTimeInterval(timeInterval,
    target: self,
    selector: "timerDidEnd:",
    userInfo: nil,
    repeats: true)
    }
}

但是,该代码将不起作用,并且 timerLabel 仅设置为 02:00 而未运行(倒计时)。

最佳答案

每次调用定时器函数时你忘记设置文本

func timerDidEnd(timer:NSTimer){
    timeCount = timeCount - timeInterval
    if timeCount <= 0 {
        TimerLabel.text = "Time's Up!"
        timer.invalidate()
    // Start edit
    } else {
        TimerLabel.text = timeString(timeCount)
    }
    // End edit
}

关于ios - Swift:打开 ViewController 后如何启动 NSTimer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34889389/

相关文章:

android - App Store 或 Google Play 应用程序的加密和导出许可证

ios - 当我导出我的 IOS PhoneGap 应用程序以进行临时分发时,如何使我的图标出现在我的 IOS PhoneGap 应用程序上?

objective-c - 如何从 NSDate 倒计时并以小时和分钟显示

ios - 检测应用何时进入后台以供我查看的最佳方法是什么?

ipad - 以 HTML5 呈现的 H.264 编码 MP4 在 Safari 上播放,但在 iOS 设备上播放

ios - 如何将 UIImage 选择器相机方向更改为横向?

ios - 禁用滚动时,UICollectionView reloadData不起作用

ios - Swift,如何创建图像映射作为 html 映射

ios - iPad Pro 的平台字符串

iphone - NSTimer 立即触发