Swift: установка таймера и переход к другому представлению

Чтобы установить таймер, а затем отобразить другое представление в Swift, вы можете использовать несколько методов. Я объясню три распространенных подхода на примерах кода:

Метод 1: Очередь отправки

DispatchQueue.main.asyncAfter(deadline: .now() + 10.0) {
    let viewController = NextViewController()
    self.present(viewController, animated: true, completion: nil)
}

В этом методе мы используем DispatchQueue.main.asyncAfter, чтобы задержать выполнение блока кода на указанное время (в данном случае 10 секунд). Как только задержка закончится, мы создадим экземпляр следующего контроллера представления (NextViewController) и представим его с помощью present(_:animated:completion:).

Метод 2: Таймер

Timer.scheduledTimer(withTimeInterval: 10.0, repeats: false) { timer in
    let viewController = NextViewController()
    self.present(viewController, animated: true, completion: nil)
}

Здесь мы используем Timer.scheduledTimer(withTimeInterval:repeats:block:), чтобы установить таймер, который срабатывает через указанный интервал (в данном случае 10 секунд). Когда таймер срабатывает, блок кода выполняется, создавая экземпляр следующего контроллера представления и представляя его.

Метод 3: объединение платформы (iOS 13+)

import Combine
var cancellable: AnyCancellable?
cancellable = Timer.publish(every: 10.0, on: .main, in: .default)
    .autoconnect()
    .sink { _ in
        let viewController = NextViewController()
        self.present(viewController, animated: true, completion: nil)
    }

В этом методе мы используем платформу объединения, представленную в iOS 13. Мы используем Timer.publish(every:on:in:)для создания издателя таймера, который выдает значения через регулярные промежутки времени. Затем мы используем оператор autoconnect()для автоматического запуска таймера и оператор sinkдля обработки выдаваемых значений. Когда таймер срабатывает, мы создаем экземпляр следующего контроллера представления и представляем его.