👨💻Автор: Виктор Грушевский (@Viktorianec)
⚒️ База: https://boosty.to/ios_dev | 🤖 @iOSIQBot | https://iosiq.ru
🍏Канал об iOS-разработке, алгоритмах и архитектурах
⭐️ Подготовка к собесам
⭐️ Код. Много кода.
#ios #mobile #swift
Post #1459
4.55K

Зачем нужен init(coder:) для View Controllers?
Наверняка, если вы только недавно начали работать с UIKit или просто перешли к верстке кодом, то могли встретить ошибку
Эта ошибка обычно возникает при создании контроллеров с помощью кода (а не с XIB или, если кто-то использует до сих пор, storyboard).
Так почему это происходит?
Класс UIViewController соответствует протоколу NSCoding.
Поскольку мы создаём его программно, то должны также соответствовать его протоколу, который включает реализацию необходимого инициализатора, даже если мы не используем его напрямую.
На примере Storyboard: в рантайме UIStoryboard создает контроллер программно, кодируя его как раз с помощью протокола NSCoding.
Storyboard передает архив данных контроллера в метод init(coder:), который затем и использует эти данные для воссоздания состояния контроллера.
📖 Понятный и несложный разбор доступен в этой статье.
😃 iOS Dev
Наверняка, если вы только недавно начали работать с UIKit или просто перешли к верстке кодом, то могли встретить ошибку
'required' initializer 'init(coder:)' must be provided by subclass of 'UIViewController'Эта ошибка обычно возникает при создании контроллеров с помощью кода (а не с XIB или, если кто-то использует до сих пор, storyboard).
Так почему это происходит?
Класс UIViewController соответствует протоколу NSCoding.
Поскольку мы создаём его программно, то должны также соответствовать его протоколу, который включает реализацию необходимого инициализатора, даже если мы не используем его напрямую.
На примере Storyboard: в рантайме UIStoryboard создает контроллер программно, кодируя его как раз с помощью протокола NSCoding.
Storyboard передает архив данных контроллера в метод init(coder:), который затем и использует эти данные для воссоздания состояния контроллера.
📖 Понятный и несложный разбор доступен в этой статье.
😃 iOS Dev
- 👍 34
- 👏 8
- ✍ 2
- ❤🔥 1
- 🔥 1
- 🙏 1
- 💯 1
- 🎅 1
- 🎄 1










