web-dev-qa-db-fra.com

Comment résoudre: «keyWindow» est déconseillé dans iOS 13.0

J'utilise Core Data avec Cloud Kit, et je dois donc vérifier l'état de l'utilisateur iCloud lors du démarrage de l'application. En cas de problème, je souhaite envoyer une boîte de dialogue à l'utilisateur, et je le fais en utilisant UIApplication.shared.keyWindow?.rootViewController?.present(...) jusqu'à présent.

Dans Xcode 11 beta 4, il y a maintenant un nouveau message de dépréciation, me disant:

'keyWindow' est déconseillé dans iOS 13.0: ne doit pas être utilisé pour les applications qui prennent en charge plusieurs scènes car il renvoie une fenêtre de clé sur toutes les scènes connectées

Comment dois-je présenter la boîte de dialogue à la place?

76
Hardy

Inspiré par la réponse de berni

let keyWindow = Array(UIApplication.shared.connectedScenes)
        .compactMap { $0 as? UIWindowScene }
        .flatMap { $0.windows }
        .first(where: { $0.isKeyWindow })
0
Milander

essayez avec ça:

UIApplication.shared.windows.filter { $0.isKeyWindow }.first?.rootViewController!.present(alert, animated: true, completion: nil)
0
Anas