<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>iLoveCode.ru: заметки с тегом UIKit</title>
<link>https://ilovecode.ru/tags/uikit/</link>
<description>Программирование на Swift, настройка Xcode, интеграция 1С с сайтом на Битрикс, настройка unix-сервера, настройка почтового сервера.</description>
<author>Михаил</author>
<language>ru</language>
<generator>E2 (v3849; Aegea)</generator>

<itunes:owner>
<itunes:name>Михаил</itunes:name>
<itunes:email></itunes:email>
</itunes:owner>
<itunes:subtitle>Программирование на Swift, настройка Xcode, интеграция 1С с сайтом на Битрикс, настройка unix-сервера, настройка почтового сервера.</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Как правильно удалить Main.Storyboard в проекте Swift</title>
<guid isPermaLink="false">10</guid>
<link>https://ilovecode.ru/all/kak-pravilno-udalit-main-storyboard-v-proekte-swift/</link>
<pubDate>Wed, 19 Oct 2022 19:31:36 +0000</pubDate>
<author>Михаил</author>
<comments>https://ilovecode.ru/all/kak-pravilno-udalit-main-storyboard-v-proekte-swift/</comments>
<description>
&lt;p&gt;При создании нового проекта по умолчанию используется режим работы со &lt;b&gt;Storyboards&lt;/b&gt;. Это значит интерфейс первого экрана приложения будет управляться через &lt;b&gt;Main.Storyboard&lt;/b&gt;. Если мы планируем работать с интерфейсов в коде, то нам нужно, чтобы этого не происходило. Для этого &lt;b&gt;Main.Storyboard &lt;/b&gt;нужно удалить и убрать его подключение.&lt;/p&gt;
&lt;h2&gt;Удаляем файл Main.Storyboard&lt;/h2&gt;
&lt;p&gt;В списке файлов проекта находим файл &lt;b&gt;Main.Storyboard&lt;/b&gt; и удаляем его, нажав bacspace. Подтверждаем удаление&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://ilovecode.ru/pictures/Snimok-ekrana-2022-10-19-v-20.45.00.png" width="647" height="403" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;После этого проект перестанет запускаться, говоря, что он не находит &lt;b&gt;Main.Storyboard&lt;/b&gt;. Нужно убрать ссылки на него.&lt;/p&gt;
&lt;h2&gt;Удаляем ссылки на Main.Storyboard из Info.plist&lt;/h2&gt;
&lt;p&gt;Чтобы удалить ссылки на &lt;b&gt;Main.Storyboard&lt;/b&gt; из &lt;b&gt;Info.plist&lt;/b&gt; переходим в настройки проекта. Выбираем &lt;b&gt;Targets&lt;/b&gt;. В ней нам нужна вкладка &lt;b&gt;Info&lt;/b&gt;. Находим параметры &lt;b&gt;Main storyboard file base name — Main&lt;/b&gt; и &lt;b&gt;Storyboard Name — Main&lt;/b&gt;. Удаляем их с помощью Backspace.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://ilovecode.ru/pictures/Snimok-ekrana-2022-10-19-v-20.47.40.png" width="1372" height="552" alt="" /&gt;
&lt;/div&gt;
&lt;h2&gt;Создаем вручную окно в SceneDelegate (iOS 13+)&lt;/h2&gt;
&lt;p&gt;Т. к. теперь приложение не использует &lt;b&gt;Storyboard&lt;/b&gt;, то нам вручную нужно создать окно и определить &lt;b&gt;ViewController&lt;/b&gt;, который будет являться точкой входа. Код &lt;b&gt;SceneDelegate&lt;/b&gt; будет выглядеть так:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;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()
    }
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Если приложение должно работать под управлением &lt;b&gt;iOS 12 и ниже&lt;/b&gt;, то похожий код нужно разместить в &lt;b&gt;AppDelegate&lt;/b&gt; вместо &lt;b&gt;SceneDelegate&lt;/b&gt;.&lt;/p&gt;
&lt;h2&gt;Проверяем, что все корректно работает.&lt;/h2&gt;
&lt;p&gt;Переходим во &lt;b&gt;ViewController&lt;/b&gt; и добавляем во &lt;b&gt;viewDidLoad()&lt;/b&gt; строку отвечающую за изменений цвета фона &lt;b&gt;view&lt;/b&gt;:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;view.backgroundColor = .systemTeal&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Загружаем приложение. Оно должно запуститься без ошибок. А мы увидим экран с новым фоном. Это говорит о том, что мы все сделали правильно.&lt;/p&gt;
</description>
</item>


</channel>
</rss>