2017-02-26 61 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