как создать обратный отсчет в Swift, который начнется после окончания обратного отсчета - PullRequest
1 голос
/ 05 апреля 2020

[Новое в Swift] Я создаю приложение на Swift 5, которое отображает время, оставшееся до запуска моей следующей задачи.

Мое приложение:


Задача 1: Запуск в 9.30

Задание 2: начало в 10.15

Допустим, текущее время: 09.00

Обратный отсчет: время до начала следующего задания = 00 : 30: 02 -> 00:30:01 ...


Я бы хотел отобразить обратный отсчет ближайшего задания.

В настоящее время у меня может быть только один таймер обратного отсчета на моем viewonLoad (), который берет текущий отсчет. Он продолжается и после его завершения он не запускается в следующий таймер после его завершения. Я понимаю, что мне придется иметь дело с фоновым состоянием на более позднем этапе, но так как я медленно начинаю. Моя идея состоит в том, чтобы убедиться, что я смогу запустить следующий таймер обратного отсчета после истечения срока действия моего текущего.

Так что в любой момент, когда я открываю свое приложение, оно всегда будет отображать обратный отсчет до моего следующего задания.

var count = 30 // calculation simplified ... this data is calc from two different date obj
override func viewDidLoad() {
        super.viewDidLoad()
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(update), userInfo: nil, repeats: true)

    }

    @objc func update() {
        if(count > 0) {
            count = count - 1
            countdownLabel.text = String(count)
        }else{
            timer!.invalidate()
            getNextTaskTimes()
        }
    }

    func getNextTaskTimes(){
        count = 5 // not working
    }

Как мне этого добиться, пожалуйста? Кроме того, есть ли лучший способ сделать это? Учитывая, что мой пользователь может закрыть приложение и вернуться позже, я все же хотел бы, чтобы мой обратный отсчет продолжался в фоновом режиме.

Любая помощь приветствуется. : D Спасибо

1 Ответ

0 голосов
/ 06 апреля 2020

Я понял, что приведенный выше код работает. Мне просто нужно убедиться, что я не аннулировал таймер в блоке else. Отмена таймера просто убивает его.

...