2017-02-26 59 views
-1

我想创建一个简单的eggTimer,但计时器根本不工作(当我打印定时器到控制台我得到这个:< __NSCFTimer:0x60800016e4c0> )和我创建的倒计时标签根本没有更新。我不确定最新的错误,因为我试图按照定时器的文档。斯威夫特 - 倒计时器不工作,不更新UILabel

下面的代码(这是第一的三个按钮softegg,mediumegg,哈德格):

import UIKit 

var count = 0 

class ViewController: UIViewController { 

@IBOutlet var countDownLabel: UILabel! 

@IBAction func softEggButton(_ sender: Any) { 

    var count = 360 
    soft() 
} 

func soft() { 

    var timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(ViewController.update), userInfo: nil, repeats: true) 

    print(timer) 


} 

func update() { 

    if(count > 0){ 
     let minutes = String(count/60) 
     let seconds = String(count % 60) 
     countDownLabel.text = minutes + ":" + seconds 
     count -= 1 
    } 

} 


override func viewDidLoad() { 
    super.viewDidLoad() 

} 

回答

0

在你的代码具有计数的两个实例。第一个在文件范围内,第二个在softEggButton函数中。您必须删除函数前面的var值。现在你正在创建一个新的实例,而不是给它赋一个新的值。还要考虑一下你是否真的需要一个全局变量。

+0

我选择了全局变量,因为出于某种原因,当我在按钮函数中声明了count变量时,我在update()函数中出现错误:“使用未解析的标识符”。当我添加全局计数变量时,错误消失了。谢谢btw! – RjC

+0

这是因为您在函数或方法中创建的实例只能在这些实例中访问。通常你会在类中创建count变量。只需在类语句下面的某处添加var count = 0即可。 – Lenny1357