1. ホーム
  2. ios

Xcode 11の後方互換性。"UIWindowScene は iOS 13 以降で利用可能です"

2023-09-08 12:32:44

質問

Xcode 11 で、Single View App テンプレートから新しいアプリ プロジェクトを作成しました。このアプリは、iOS 13 だけでなく iOS 12 でも動作させたいと思っています。しかし、デプロイメント ターゲットを iOS 12 に切り替えると、このようなエラー メッセージが大量に表示されます。

UIWindowScene は iOS 13 以降で利用可能です。

どうしたらいいでしょうか?

どのように解決するのですか?

Xcode 11のテンプレートは、シーンデリゲートを使用しています。シーンデリゲートと関連するクラスは iOS 13 で新しく、iOS 12 以前には存在せず、起動プロセスも異なります。

Xcode 11 のアプリテンプレートから生成されたプロジェクトを後方互換性のあるものにするには、SceneDelegate クラス全体と、UISceneSession を参照する AppDelegate クラスのすべてのメソッドを、以下のようにマークする必要があります。 @available(iOS 13.0, *) .

を宣言する必要があります。 window プロパティを AppDelegate クラスで宣言する必要があります (これを行わないと、アプリは実行されて起動しますが、画面は真っ黒になります)。

var window : UIWindow?

その結果、このアプリがiOS 13で実行されると、シーンデリゲートに window を持ちますが、iOS 12 以前で実行する場合は、アプリデリゲートには window - を考慮する必要があり、他のコードでは その を考慮する必要があるかもしれません。