Rose debug info
---------------

Как правильно удалить Main.Storyboard в проекте Swift

При создании нового проекта по умолчанию используется режим работы со Storyboards. Это значит интерфейс первого экрана приложения будет управляться через Main.Storyboard. Если мы планируем работать с интерфейсов в коде, то нам нужно, чтобы этого не происходило. Для этого Main.Storyboard нужно удалить и убрать его подключение.

Удаляем файл Main.Storyboard

В списке файлов проекта находим файл Main.Storyboard и удаляем его, нажав bacspace. Подтверждаем удаление

После этого проект перестанет запускаться, говоря, что он не находит Main.Storyboard. Нужно убрать ссылки на него.

Удаляем ссылки на Main.Storyboard из Info.plist

Чтобы удалить ссылки на Main.Storyboard из Info.plist переходим в настройки проекта. Выбираем Targets. В ней нам нужна вкладка Info. Находим параметры Main storyboard file base name — Main и Storyboard Name — Main. Удаляем их с помощью Backspace.

Создаем вручную окно в SceneDelegate (iOS 13+)

Т. к. теперь приложение не использует Storyboard, то нам вручную нужно создать окно и определить ViewController, который будет являться точкой входа. Код SceneDelegate будет выглядеть так:

class SceneDelegate: UIResponder, UIWindowSceneDelegate {

    var window: UIWindow?

    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        guard let windowScene = (scene as? UIWindowScene) else { return }
        
        window = UIWindow(windowScene: windowScene)
        window?.windowScene = windowScene
        window?.makeKeyAndVisible()
        window?.rootViewController = ViewController()
    }
}

Если приложение должно работать под управлением iOS 12 и ниже, то похожий код нужно разместить в AppDelegate вместо SceneDelegate.

Проверяем, что все корректно работает.

Переходим во ViewController и добавляем во viewDidLoad() строку отвечающую за изменений цвета фона view:

view.backgroundColor = .systemTeal

Загружаем приложение. Оно должно запуститься без ошибок. А мы увидим экран с новым фоном. Это говорит о том, что мы все сделали правильно.

Поделиться
Отправить
Запинить
 2266   2022   iOS   SceneDelegate   Storyboard   Swift   UIKit   XCode