iOS 13: Swift - «Установить программный контроллер корневого представления приложения не работает» - PullRequest
1 голос
/ 24 сентября 2019

У меня есть следующий код в AppDelegate.swift для настройки контроллера корневого представления для приложения iOS.Но это не работает.Он следует целевой структуре (определенной на вкладке «Общие») и игнорирует этот код.

(XCode 11, Swift 5.1, iOS 13)

class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

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

        window = UIWindow(frame: UIScreen.main.bounds)
        guard let rootVC = UIViewController() else {
            print("Root VC not found")
            return true
        }
        let rootNC = UINavigationController(rootViewController: rootVC)
        window?.rootViewController = rootNC
        window?.makeKeyAndVisible()

        return true
    }
}

Невозможно понять, в чем проблема.

Я также попробовал следующие ссылки, но безуспешно:

1 Ответ

1 голос
/ 24 сентября 2019

Я попробовал следующие два варианта, и оба из них работают на меня.В iOS-13 (Xcode 11) по умолчанию включен новый файл SceneDelegate.swift с концепцией UIWindowScene.

class SceneDelegate: UIResponder, UIWindowSceneDelegate {

    var window: UIWindow?


    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {

        guard let windowScene = (scene as? UIWindowScene) else { return }


        self.window = UIWindow(windowScene: windowScene)
        //self.window =  UIWindow(frame: UIScreen.main.bounds)
        guard let rootVC = AppConstants.Storyboards.board.Miscellaneous?.instantiateViewController(identifier: LanguageVC.className) as? LanguageVC else {
            print("Lanaguge VC not found")
            return
        }
        let rootNC = UINavigationController(rootViewController: rootVC)
        self.window?.rootViewController = rootNC
        self.window?.makeKeyAndVisible()
    }
}

Альтернатива:

class SceneDelegate: UIResponder, UIWindowSceneDelegate {

    var window: UIWindow?


    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        let windowScene = UIWindowScene(session: session, connectionOptions: connectionOptions)
        self.window = UIWindow(windowScene: windowScene)
        //self.window =  UIWindow(frame: UIScreen.main.bounds)
        guard let rootVC = AppConstants.Storyboards.board.Miscellaneous?.instantiateViewController(identifier: LanguageVC.className) as? LanguageVC else {
            print("Lanaguge VC not found")
            return
        }
        let rootNC = UINavigationController(rootViewController: rootVC)
        self.window?.rootViewController = rootNC
        self.window?.makeKeyAndVisible()

    }
}

Не знаю,почему и как это работает, но это решило мою проблему.

Справочные документы, которые мне помогли:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...