TGViewer
iOS Dev iOS Dev @iosdev · 7.92K subscribers
Post #1459 4.55K
Зачем нужен init(coder:) для View Controllers?

Наверняка, если вы только недавно начали работать с 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
More from @iosdev
  1. Oct 9, 2026Эффект премиальной банковской карты с помощью SwiftUI и Metal Такая красота часто встречае…
  2. Oct 9, 2026Итеративная загрузка данных в Swift Хотя одновременное выполнение десятков асинхронных зап…
  3. Oct 8, 2026Мультиагентность: следующий шаг в разработке или лишняя сложность? AI-агенты уже умеют пис…
  4. Oct 8, 2026Продвинутые техники работы с макросами в Swift Владение макросами позволяет автоматизирова…
  5. Oct 7, 2026Работа с модальными экранами на iPhone Duo На iPhone Duo всплывающие окна могут выглядеть…
  6. Oct 6, 2026⚡️ Apple обязали всех делать поддержку iPhone Duo с апреля 2027 года Сегодня выкатили обно…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →