2017-12-23 17 views
0

Ich habe ein Problem mit meiner Counter-Anwendung. Beim Starten des Zählers funktioniert alles gut, aber das Etikett zeigt den Anfangswert 0,0 plus zusätzlich die neue Zeit + = 0,2. Sehen Sie das Ergebnis auf dem Foto unten. Hat jemand eine Lösung? Vielen Dank!Etikett wird zweimal angezeigt. Swift

import UIKit 

class CounterViewController: UIViewController { 

var time = 0.0 
var timer = Timer() 

@IBOutlet weak var timerLabel:UILabel! 

@IBAction func startCounter(_ sender:UIButton){ 
    timer = Timer.scheduledTimer(timeInterval: 0.2, target: self, selector:#selector(CounterViewController.startAction), userInfo:nil, repeats: true) 

} 

@IBAction func pauseCounter(_ sender:UIButton){ 
    timer.invalidate() 
} 

@IBAction func stopCounter(_ sender:UIButton){ 
    timer.invalidate() 
    time = 0.0 
    timerLabel.text = "\(time)" 
} 
@objc func startAction(){ 
    time += 0.2 
    timerLabel.text = "\(time)" 
} 
override func viewDidLoad() { 
super.viewDidLoad() 
} 
} 

see label twice

+0

C hack dein Storyboard; Ich vermute, du hast deiner Szene zwei Labels hinzugefügt. Einer ist mit der Steckdose verbunden und der andere sitzt nur da und zeigt 0 – Paulw11

+0

Dies scheint ein Storyboard (oder XIB-Datei) zu verwenden, da Sie ein IBOutlet und IBActions haben. Wie ist das Setup? Du hast noch kein Label hinzugefügt, oder? –

Antwort

-1

Versuchen Sie, diese in Timer Erklärung

var timer:Timer? 

und setzen Sie diese in viewDidLoad

timerLabel.text = "0.0" 

Auch Ihre xib oder Storyboard überprüfen Wenn gleiche Label zweimal hinzugefügt

+0

Vergessen Sie nicht, dass dies die Timer-Eigenschaft zu einem optionalen ändert und Sie den Code entsprechend anpassen müssen. –

+0

ja ich weiß, einen Timer wie = timer() zu deklarieren ist nicht geeignet –

+0

Ich nahm an, Sie wüssten, dass ich nur darauf hinwies für jeden, der sich wundern könnte, warum es plötzlich Fehler überall gibt. Ich stimme völlig zu, dass die ursprüngliche Deklaration mit Timer() falsch ist. –

Verwandte Themen