アプリを開発していると、バナーを表示する処理の過程で次の警告メッセージが表示されました。
‘windows’ was deprecated in iOS 15.0: Use UIWindowScene.windows on a relevant window scene instead
今回は、警告メッセージを削除する手順をご紹介します。
メッセージの意味
翻訳結果は次のとおりです。
‘windows’ は iOS 15.0 で非推奨となりました。代わりに関連するウィンドウシーンでUIWindowScene.windowsを使用します。
DeepL
次のようにrootViewControllerを取得する処理を UIApplication の windows を使って書いているのですが、iOS 15.0 からは非推奨となったようです。
UIApplication.shared.windows.first?.rootViewController
では、メッセージに書いてあるとおり、次のように UIApplication.shared.windows の部分を UIWindowScene.windows に置き換えてやればよいのかというと、それではうまくいきませんでした。
UIWindowScene.windows.first?.rootViewController
修正方法
まず、UIApplicationクラス の connectedScenesプロパティを取得します。
UIApplication.shared.connectedScenes
connectedScenesプロパティ は Set<UIScene>型なので、firstで先頭データを取得し、UIWindowScene型にキャストする必要があります。
scenes.first as? UIWindowScene
あとはrootViewControllerを取得するのみです。
これらの処理をまとめると次のとおり。
let scenes = UIApplication.shared.connectedScenes
let windowScene = scenes.first as? UIWindowScene
let rootVC = windowScene?.keyWindow?.rootViewController
これで警告はでなくなりました。
お疲れ様でした。
参考
SwiftのUIKitフレームワークのUIApplicationクラスの使い方やプロパティ、メソッドなどをまとめました。…