Timer wird nicht ausgeführt.

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Timer wird nicht ausgeführt.

    Hallo zusammen,

    ich befasse mich seit kurzem mit dem programmieren von iOS Apps, hauptsächlich als Zeitvertreib und bin von daher noch Neuling.
    Nun zu meinem Problem:
    Wie ihr auf dem Foto seht habe ich, um Swift etwas besser kennenzulernen einfach mal angefangen kleine Dinge die es schon gibt versucht selber zu programmieren. Hier im Bild habe ich einen Timer. Dieser funktioniert mit Start/Stop/Reset soweit gut, Nun wollte ich das er sich nach 1 Minute selber auf 0 setzt, was er auch macht. Jedoch will ich nun dass er sich nach dieser Minute auf 0 setzt und wieder von 0 beginnt. Daher habe ich beim Zähler, eine Funktion eingebaut, dass er wenn 60 Sekunden vergangen sind den Timer auf 0 setzt, und eine Variable die sich "minutePassed" nennt auf true setzt. Weiter unten habe ich einen Func der nach der ersten Minute wieder von 0 aus weiterzählen sollte. Dabei wird da wenn die Variable "minutePassed" true ist einfach noch mal derselbe Timer wie oben ausgeführt. (Habe den einfach Kopiert) Nun jedoch setzt sich nach 60 Sekunden der Timer auf 0 und fertig. Nichts passiert mehr. Kann mir hier eventuell jemand helfen? Sorry falls es eine blöde Frage ist, ich habe noch nicht viel Ahnung vom Programmieren :/
    Bilder
    • Bildschirmfoto 2017-09-07 um 17.57.32.png

      792,98 kB, 3.360×2.100, 109 mal angesehen
  • Mac & i Test Abo
  • Ein paar Anmerkungen:

    1.) Auf timerGotStopped könntest Du verzichten, wenn Du den Timer zum Optional machst.
    2.) minutePased scheint mir überflüssig.
    3.) Den Grenzwert (60 Sekunden) kann man eigentlich ganz praktisch in einem Property Observer behandeln; inklusive GUI update.
    4.) Wieso für Stop und Start zwei Buttons?

    Ich habe mir mal erlaubt, selber auf die Schnelle was zusammenzuschreiben. Nur so als Anregung:

    C-Quellcode

    1. import Cocoa
    2. @NSApplicationMain
    3. class AppDelegate: NSObject, NSApplicationDelegate {
    4. @IBOutlet weak var window: NSWindow!
    5. @IBOutlet weak var secondsLabel: NSTextField!
    6. var timer: Timer?
    7. var seconds: Int = 0 {
    8. didSet {
    9. if seconds >= 60 { seconds = 0 }
    10. let labelString = seconds < 10 ? "0\(seconds)" : "\(seconds)"
    11. secondsLabel.stringValue = labelString
    12. }
    13. }
    14. @IBAction func startStopButton(_ sender: NSButton) {
    15. if timer == nil {
    16. timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(incrementCounter),
    17. userInfo: nil, repeats: true)
    18. } else {
    19. timer!.invalidate()
    20. timer = nil
    21. }
    22. sender.title = timer == nil ? "Start" : "Stop"
    23. }
    24. @IBAction func resetSeconds(_ sender: NSButton) {
    25. seconds = 0
    26. }
    27. @objc func incrementCounter() {
    28. seconds += 1
    29. }
    30. }
    Alles anzeigen

    Edit: Property startStopButton rausgeschmissen.
    Dateien
    • Timer.zip

      (31,15 kB, 40 mal heruntergeladen, zuletzt: )
    Das iPhone sagt: "Zum Antworten streichen". Wie? Echt Jetzt? Muß ich erst die Wohnung streichen!?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von torquato ()