Делегат приложения должен реализовать свойство window, если он хочет использовать основной файл раскадровки swift

Я только что разработал приложение, но при запуске в симуляторе консоль отладчика говорит:

The app delegate must implement the window property if it wants to use
a main storyboard file.

У меня есть файл делегата приложения. Что означает сообщение, и как я могу заставить приложение работать?

Ответ 1

Убедитесь, что в классе AppDelegate имеется следующее объявление свойства:

var window: UIWindow?

Ответ 2

На всякий случай, если кто-то сталкивается с этим снова и программирует в Objective-C, убедитесь, что у вас есть эта строка кода в вашем файле AppDelegate.h:

@property (strong, nonatomic) UIWindow *window;

Ответ 3

Если вы запустите свой проект на iOS 13.0 раньше, в этом случае вы столкнетесь с проблемой. Из-за iOS 13 и более поздних версий приложение запускается не так, как в предыдущих версиях.

  • В iOS 13 и более поздних версиях используйте объекты UISceneDelegate для реагирования на события жизненного цикла в приложении на основе сцен

  • В iOS 12 и более ранних версиях используйте объект UIApplicationDelegate для ответа на события жизненного цикла.

Когда вы запускаете приложение в iOS 12 и более ранних версиях, тогда класс UIApplicationMain ожидает свойства окна в вашем классе AppDelegate, как у SceneDelegate. Таким образом, ваша проблема будет решена, если вы добавите следующую строку в ваш класс AppDelegate.

var window: UIWindow?

Для Objective-C

   @property (strong, nonatomic) UIWindow *window;

Вы можете найти больше здесь Жизненный цикл приложения.

Ответ 4

Нет, Xcode использует автоматическое назначение, если вы определили файл Основного интерфейса, в разделе Цель приложения> вкладка Общие> Информация о развертывании> Поле главного интерфейса.

Просто перетащите текстовое поле, например, на Main.storyboard.

В XCode он создан и назначен в "Единственном Приложении Представления", по умолчанию.