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

timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector:#selector(TimesViewController.updateUI), userInfo: nil, repeats: true)

Есть ли способ вызывать эту функцию каждое начало новой минуты?

0
Omar Khodr 24 Июл 2020 в 14:00
1
Что вы имеете в виду под start of a new minute ?
 – 
Omer Faruk Ozturk
24 Июл 2020 в 14:26
Я имею в виду в начале первой минуты дня, во вторую минуту дня и так далее. Объясняем по-другому, каждый раз, когда вторая стрелка на аналоговых часах достигает 12.
 – 
Omar Khodr
24 Июл 2020 в 23:27
Я добавил ответ, связанный с этим.
 – 
Omer Faruk Ozturk
25 Июл 2020 в 00:09

1 ответ

Лучший ответ

Создайте таймер, который проверяет системную дату каждую секунду. Например;

Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { (_) in
    let second = Calendar.current.component(.second, from: Date())
    if second == 0 {
        // new minute
        updateUI()
    }
}
1
Omer Faruk Ozturk 25 Июл 2020 в 00:31
1
Благодарю вас! Есть ли способ сделать это без использования таймера?
 – 
Omar Khodr
25 Июл 2020 в 09:56