web-dev-qa-db-fra.com

AppDelegate et SceneDelegate lors de la prise en charge d'iOS 12 et 13

Je dois prendre en charge iOS 12 et iOS 13.

Dois-je dupliquer du code entre AppDelegate et SceneDelegate?

Par exemple:

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
    guard let windowScene = (scene as? UIWindowScene) else { return }
    let window = UIWindow(windowScene: windowScene)

    window.rootViewController = HomeViewController()
    window.makeKeyAndVisible()

    self.window = window
}

et

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    let window = UIWindow(frame: UIScreen.main.bounds)
    window.rootViewController = HomeViewController()
    window.makeKeyAndVisible()

    self.window = window

    return true
}

Si je ne le fais pas, dans 1 version, je me retrouve avec un écran noir, mais si je le fais et que j'imprime dans la méthode viewDidLoad de HomeViewController je peux voir qu'il est appelé deux fois.

Je mets à jour mon didFinishLaunchingWithOptions et je peux voir dans iOS13 il est toujours appelé deux fois.

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

    guard #available(iOS 12, *) else { return true }

    let window = UIWindow(frame: UIScreen.main.bounds)
    window.rootViewController = HomeViewController()
    window.makeKeyAndVisible()

    self.window = window

    return true
}
5
Teddy K

Xcode 11. * et Swift 5. *

Suivez les étapes ci-dessous après que votre code fonctionnera correctement pour iOS 12 et iOS 13 -

  1. Supprimer le manifeste de scène du fichier info.plist
  2. Supprimer le délégué de scène
  3. Ajouter une propriété de fenêtre à l'intérieur de l'AppDelegate
  4. Supprimez toutes les méthodes (2 méthodes principalement) liées à la scène d'AppDelegate

J'espère que cela fonctionnera pour quelqu'un. Happy Coding ????

1
Prashant Gaikwad