Во время работы приложения в вашем коде нет ничего, что фактически указывало бы контроллеру представления о необходимости обновить sh или проверить дату еще раз и выбрать другое слово.
Один из способов решения этой проблемы может быть, чтобы запустить таймер в viewDidLoad()
, либо повторять через короткий интервал, либо повторять каждые 24 часа, начиная с полуночи.
Другой способ может заключаться в проверке даты и представлении нового слова только тогда, когда пользователь открывает / активирует / переключается обратно в приложение. Это может быть сделано путем добавления наблюдателя, например:
NotificationCenter.default.addObserver(self, selector: #selector(didEnterBackground), name: UIApplication.didBecomeActiveNotification, object: nil)
или следующим образом, если ваше приложение имеет UIWindowSceneDelegate
:
if #available(iOS 13.0, *) {
NotificationCenter.default.addObserver(self, selector: #selector(didBecomeActive), name: UIScene.didActivateNotification, object: nil)
} else {
NotificationCenter.default.addObserver(self, selector: #selector(didBecomeActive), name: UIApplication.didBecomeActiveNotification, object: nil)
}
Внутри вашей функции didBecomeActive
(или эквивалент) вы можете проверить дату и получить другое случайное слово.