Как делегат сцены может быть использован до iOS 13? - PullRequest
0 голосов
/ 01 октября 2019

Так что iOS 13 действительно доставляет мне неприятности! Я не могу понять, как SceneDelegate может использоваться в моем существующем приложении.

В настоящее время я использую логическую проверку в моем AppDelegate, чтобы определить, какой ViewController представлен первым ... Мне нужно выяснитькак повторить это, используя SceneDelegate.

Моя главная задача - как я могу убедиться, что мое приложение будет работать как на iOS 13, так и на любой версии iOS раньше? Если я добавлю SceneDelegate, не произойдет ли сбой моего приложения, работающего на пред iOS 13?

Вот мой текущий метод установки rootVC

if (loggedIn == nil){
           Utilities.setLoginAsInitialViewContoller(window: window)
       }
       else
       {
           if(termsAgree == nil){
               Utilities.setTermsAsInitialViewController(window: window)
           }
           if(loggedIn != nil){
               if(termsAgree != nil){
                   Utilities.setHomeAsInitialViewContoller(window: window)
               }
           }
       }
class func setLoginAsInitialViewContoller(window:UIWindow) {
       let storyboard = UIStoryboard(name: “Login”, bundle: nil)
       let controller = storyboard.instantiateViewController(withIdentifier: “LoginViewController”)
       window.rootViewController = controller
       window.makeKeyAndVisible()
   }
   class func setHomeAsInitialViewContoller(window:UIWindow) {
       let storyboard = UIStoryboard(name: “Home”, bundle: nil)
       let controller = storyboard.instantiateViewController(withIdentifier: “MainViewNavController”)
       window.rootViewController = controller
       window.makeKeyAndVisible()
   }
   class func setTermsAsInitialViewController(window:UIWindow){
       let storyboard = UIStoryboard(name: “Terms”, bundle: nil)
       let controller = storyboard.instantiateViewController(withIdentifier: “TermsViewController”)
       window.rootViewController = controller
       window.makeKeyAndVisible()
   }

Приведенный выше код содержится в моем Utilities.swift класс и называется по моему AppDelegate.swift вот так:

Utilities.decideInitialViewController(window: self.window!)

1 Ответ

0 голосов
/ 01 октября 2019

Вы не можете использовать SceneDelegate до iOS 13, это фактически приведет к ошибке компиляции.

xxx доступно только в iOS 13.0 или новее

Все существующие приложения не требуют SceneDelegate для совместимости с iOS 13.

Вы можете просто создать свое приложение с последней версией Xcode, и вы должны хорошоgo (с небольшими настройками, такими как совместимость в темном режиме и некоторые новые изменения пользовательского интерфейса, но это не помешает запуску вашего приложения на устройстве iOS 13+).

Даже если бы я не рекомендовал этого, вы по-прежнемуможно использовать SceneDelegate, но вы должны использовать тег @available, чтобы сообщить Xcode, что этот код будет использоваться только для устройств iOS 13+. Это означает, что устройства iOS 13+ будут использовать SceneDelegate, а iOS 12 и менее будут продолжать использовать AppDelegate. Этот метод требует поддержки некоторого кода обратной совместимости.

Есть некоторое объяснение этому здесь

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