2016-08-01 30 views
1

Hallo Ich entwickle einen Countdown-Timer, der nach 8 Stunden stoppen muss. Hier ist sie:Wie man einen CountDown Timer mit Swift macht

import UIKit 

class ViewController: UIViewController { 

    var timer = NSTimer() 
    var counter = 0 

@IBOutlet weak var Label: UILabel! 

override func viewDidLoad() { 
super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
} 

override func didReceiveMemoryWarning() { 
super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

@IBAction func Start(sender: AnyObject) { 
counter = 28800 
Label.text = String(counter) 
timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("updateTimer"), userInfo: nil, repeats: true) 
    } 

    func updateTimer() { 

counter -= 1 
Label.text = String(counter) 

} 

@IBAction func Stop(sender: AnyObject) { 

timer.invalidate() 
} 
} 

Aber anstatt der mit 28.800 Sekunden (was 8 Stunden ist) Ich möchte 07.59.59 08.00.00, angezeigt werden, 07.59.58, usw ... Im Moment zeigt es 28800, 28799, 28798, so weiter. Hast du eine Idee wie man es als echte Uhr formatiert (08:00:00)?

Antwort

1

hatte ich das gleiche Problem und so ziemlich ein noob in Xcode/swift - aber nach einigen Quellen bewerten, hier ist was ich zusammen, die für mich funktioniert:

Ihre Replace:

func updateTimer() { 

counter -= 1 
Label.text = String(counter) 
} 
diese

mit:

func updateTimer() { 
     counter -= 1 
     let hours = Int(counter)/3600 
     let minutes = Int(counter)/60 % 60 
     let seconds = Int(counter) % 60 
     Label.text = String(format: "%02i:%02i:%02i",hours,minutes,seconds) 
} 

(Xcode 8.1 warnt vor Einsatz von "let" oder „va r“für Stunden/Minuten/Sekunden, aber es funktioniert immer noch)

Ergebnis wie folgt aussehen:

00:00:00