2017-02-26 11 views
-1

簡単なeggTimerを作成しようとしていますが、タイマーがまったく機能しません(コンソールにタイマーを印刷すると、次のようになります)。< __NSCFTimer:0x60800016e4c0> )私が作成したcountdownLabelはまったく更新されません。私はタイマーのドキュメントに従おうとしたため何が間違っているのかわからない。Swift - カウントダウンタイマーが機能しないUILabel

は、ここで(これは三つのボタンsoftegg、mediumegg、hardeggの最初のためである)のコードです:あなたのコードで

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

あなたは、カウントの2つのインスタンスを持っています。最初のものはファイルスコープで、もう1つはsoftEggButton関数のものです。関数内のcountの前にあるvarを削除する必要があります。今は新しいインスタンスを作成しており、新しいインスタンスに新しい値を割り当てていません。また、ここにグローバル変数が本当に必要かどうかについても考えてください。

+0

私は、何らかの理由でボタンの関数でcount変数を宣言したときに、 "未解決の識別子の使用"と言っているupdate()関数でエラーが発生したので、グローバル変数を選択しました。グローバルカウント変数を追加すると、エラーは消えました。ありがとうbtw! – RjC

+0

これは、関数またはメソッドで作成するインスタンスには、これらのインスタンス内でのみアクセスできるためです。通常、クラス内でcount変数を作成します。 classステートメントの下のどこかにvar count = 0を追加するだけです。 – Lenny1357

関連する問題