В моем подклассе UIApplication
работает таймер, который должен отправить пользователя определенному ViewController
, когда он закончится.
Я могу создать экземпляр ViewController
, к которому я хочу пойти ...
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "StartVC")
... но я не знаю, как на самом деле представить его. Внутри AppDelegate
Я мог бы сделать window.rootViewController
и т. Д. Но это недоступно в моем подклассе UIApplication
.
Я также пытался self.windows[0].rootViewController
, но это всегда только первый ViewController
, который присутствовал при запуске приложения. То же самое с self.keyWindow.rootViewController
. И я, честно говоря, не знаю, каковы оба этих свойства.
Полный код для контекста:
import Foundation
import UIKit
class MyApplication: UIApplication {
var inactivityTimer: Timer!
override init() {
super.init()
restartInactivityTimer()
}
@objc func timerExceeded() {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "StartVC")
//...here I would need to present "vc"
}
override func sendEvent(_ event: UIEvent) {
super.sendEvent(event)
restartInactivityTimer()
}
func restartInactivityTimer() {
if inactivityTimer != nil { inactivityTimer.invalidate() }
inactivityTimer = Timer.scheduledTimer(timeInterval: 2.0, target: self, selector: #selector(timerExceeded), userInfo: nil, repeats: false)
}
}