Установить rootViewController iOS 13 - PullRequest
0 голосов
/ 24 сентября 2019

После обновления XCode критическая часть моего приложения перестала работать.

Когда мое приложение запускается, я запускаю функцию для проверки логических флагов и устанавливаю правильный rootViewController.

Но код, который я использовал для установки этого, теперь перестал работать

class func setLoginAsInitialViewContoller(window:UIWindow) {
    print("SET LOGIN") 
    let storyboard = UIStoryboard(name: "Login", bundle: nil)
    let controller = storyboard.instantiateViewController(withIdentifier: "LoginViewController")
    controller.modalPresentationStyle = .overFullScreen
    window.rootViewController = controller
    window.makeKeyAndVisible()
}

В частности, когда приложение получает вторую последнюю строку window.rootViewController = controller, оно завершается с ошибкой libc++abi.dylib: terminating with uncaught exception of type NSException.

Вышеуказанная функция находится в классе с именем Utilities.swift, и я вызываю функцию изнутриmy AppDelegate.swift, как показано ниже:

class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?
    var storyboard: UIStoryboard? = nil

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

        UIApplication.shared.isIdleTimerDisabled = true
        Utilities.decideInitialViewController(window: self.window!)

        return true
    }

Любые решения или исправления относительно того, как я могу установить корневой контроллер, очень ценятся.

Спасибо!

1 Ответ

0 голосов
/ 25 сентября 2019

Это потому, что AppDelegate.swift больше не имеет свойства window.Теперь вы должны использовать SceneDelegate.swift для изменения контроллера корневого представления.Как показано в этом примере: Доступ к Root View Controller при запуске на iOS 13 с SceneDelegate

...