1. AppDelegate.swift と SceneDelegate.swift
エラーが出ている箇所に@availableを付ける。
AppDelegate.swift
// MARK: UISceneSession Lifecycle
@available(iOS 13.0, *)
func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
(略)
}
@available(iOS 13.0, *)
func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
(略)
}
SceneDelegate.swift
@available(iOS 13.0, *)
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
2. AppDelegateにwindowプロパティを追加する。
AppDelegate.swift
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow? // 追加
とりあえず、これでエラーは出なくなります。
ただし、
(iOS 13)
- 起動
-
AppDelegate
application:didFinishLaunchingWithOptions: (windowはnil) -
SceneDelegate
scene:willConnectTo:options (windowに値がセットされる)
(iOS 12以下)
- 起動
-
AppDelegate
application:didFinishLaunchingWithOptions: (windowに値がセットされる) -
SceneDelegate
呼ばれない
このような起動時の流れになりますので、windowプロパティにget / setしている場合はもうひと工夫必要になります。
Xcode11で作成したプロジェクトを古いOSに対応させる 完結編
Xcode 11 beta3を元に作成しています。後日変更される可能性があります。