Hallo zusammen,
ich komme gerade nicht weiter und habe schon einiges recherchiert, nun hoffe ich auf eine Idee von euch
Ich erstelle eine Stoppuhr App mit Storyboard. Dabei habe ich 2 Buttons (einer macht den Start / Stop und der zweite soll das Reset übernehmen. Zudem gibt es 1 Label zur Anzeige der Stoßzeit.
Soweit funktioniert meine Stoppuhr. Erst habe ich es mit einer festen Variable gestartet, da funktioniert der Reset auch super. Nun wollte ich das ganze mal mit timeIntervalSinceNow realisieren, leider bekomme ich nun den Reset nicht mehr hin
Wo ist denn mein Knoten im Hirn? Mit timer=nil bekomme ich eine Fehlermeldung.
Ah und nicht wundern, durch das testen und versuchen ist noch die ein oder andere Variable da
Alles anzeigen
ich komme gerade nicht weiter und habe schon einiges recherchiert, nun hoffe ich auf eine Idee von euch
Ich erstelle eine Stoppuhr App mit Storyboard. Dabei habe ich 2 Buttons (einer macht den Start / Stop und der zweite soll das Reset übernehmen. Zudem gibt es 1 Label zur Anzeige der Stoßzeit.
Soweit funktioniert meine Stoppuhr. Erst habe ich es mit einer festen Variable gestartet, da funktioniert der Reset auch super. Nun wollte ich das ganze mal mit timeIntervalSinceNow realisieren, leider bekomme ich nun den Reset nicht mehr hin
Wo ist denn mein Knoten im Hirn? Mit timer=nil bekomme ich eine Fehlermeldung.
Ah und nicht wundern, durch das testen und versuchen ist noch die ein oder andere Variable da
Quellcode
- import UIKit
- class ViewController: UIViewController {
- //Variablen die benötigt werden festlegen
- var timer : Timer?
- var timerAn = false
- var timerReset = false
- var startZeit = TimeInterval()
- var zeit = Date()
- //Outlets erstellen für Text- und Farbwechsel und disablen
- @IBOutlet weak var zeitLabel: UILabel!
- @IBOutlet weak var startStopButton: UIButton!
- @IBOutlet weak var resetButton: UIButton!
- //Funktion was passiert wenn der Button getrückt wird, wenn der Timer läuft oder nicht
- @IBAction func timerTapped(_ sender: Any) {
- if timerAn == false {//&& timerReset == false {
- //Tittle, Hintergrundfarbe und Textfarbe ändern
- startStopButton.setTitle("Stopp", for: .normal)
- startStopButton.backgroundColor = UIColor.red
- startStopButton.tintColor = UIColor.black
- //Timer auf true setzen
- timerAn = true
- //Resetbutton enablen, vorher passiert nichts
- resetButton.isEnabled = true
- timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(zeitUpdate), userInfo: nil, repeats: true)
- }
- else {
- // Wenn der Timer läuft soll folgendes passieren
- if timerAn == true {
- //Timer wird gestoppt
- timer?.invalidate()
- //Titel im Button wird in Start geändet
- startStopButton.setTitle("Start", for: .normal)
- // Timer wird auf aus gesetzt
- timerAn = false
- //Hintergrund und Textfarbe ändern
- startStopButton.backgroundColor = UIColor.green
- startStopButton.tintColor = UIColor.blue
- }
- }
- }
- @objc func zeitUpdate() {
- //Zeitberechnung durchführen, Werte in einen String umwandeln und im Label anzeigen
- //zeit += 1.0
- let now = zeit.timeIntervalSinceNow * -1
- // let timeFormater = DateComponentsFormatter()
- // timeFormater.unitsStyle = .positional
- // timeFormater.allowedUnits = [.hour, .minute, .second]
- // timeFormater.zeroFormattingBehavior = [.pad]
- let elementeZeit = Int(floor(now))
- let stunde = (elementeZeit / 3600)
- let stundeStr = String(format: "%02d", stunde)
- let minute = (elementeZeit % 3600) / 60
- let minuteStr = String(format: "%02d", minute)
- let sekunde = (elementeZeit % 3600) % 60
- let sekStr = String(format: "%02d", sekunde)
- zeitLabel.text = "\(stundeStr):\(minuteStr):\(sekStr)"
- }
- @IBAction func clearTapped(_ sender: Any) {
- //Ist der Timer gestoppt darf der Reset Button alles zurücksetzen
- if timerAn == false {
- //Label auf 00:00:00
- zeitLabel.text = "00:00:00"
- //der Reset Button wird wieder disabled
- resetButton.isEnabled = false
- timerReset = true
- }
- }
- override func viewDidLoad() {
- super.viewDidLoad()
- // Festlegung was mit den Buttons am Start passieren soll
- resetButton.isEnabled = false
- //Form des StartStop Buttons ändern
- startStopButton.layer.cornerRadius = startStopButton.bounds.width / 2.0
- startStopButton.layer.masksToBounds = true
- //Farbe zum Start auf Grün setzen
- startStopButton.backgroundColor = UIColor.green
- }
- }