Обратная совместимость с Xcode 11: «UIWindowScene доступна только в iOS 13 или новее» - PullRequest
0 голосов
/ 06 июля 2019

В Xcode 11 я создал новый проект приложения из шаблона приложения Single View. Я хочу, чтобы это приложение работало как в iOS 12, так и в iOS 13. Но когда я переключаю цель развертывания на iOS 12, я получаю множество сообщений об ошибках о том, что «UIWindowScene доступен только в iOS 13 или новее». Что мне делать?

1 Ответ

1 голос
/ 06 июля 2019

Шаблон в Xcode 11 использует делегата сцены. Делегаты сцены и связанные классы являются новыми в iOS 13; они не существуют в iOS 12 и ранее, и процесс запуска отличается.

Чтобы сделать проект, сгенерированный из шаблона приложения Xcode 11, обратно совместимым, необходимо пометить весь класс SceneDelegate и любые методы в классе AppDelegate, которые ссылаются на UISceneSession, как @available(iOS 13.0, *).

Вам также необходимо объявить свойство window в классе AppDelegate (если вы этого не сделаете, приложение запустится и запустится, но экран будет черным):

var window : UIWindow?

В результате, когда это приложение работает в iOS 13, делегат сцены имеет window, но когда он запускается в iOS 12 или более ранней версии, делегат приложения имеет window - и тогда вашему другому коду может понадобиться учитывать , что для обеспечения обратной совместимости.

...