Ответ 1
Основываясь на Иерархии наследования, которую вы настроили. PaymentViewController
унаследует 3 метода инициализации.
UIViewController
предоставляет init(nibName:bundle)
в качестве назначенного инициализатора.
UIViewController
также соответствует NSCoding
, откуда берется required init(coder:)
.
UIViewController
также наследуется от NSObject
, который предоставляет базовый метод init()
.
Проблема, с которой вы столкнулись, связана с вызовом init(coder:
при создании экземпляра ViewController из .xib или раскадровки. Этот метод вызывается для разархивирования объектов .xib/storyboard.
Из документации:
iOS инициализирует новый контроллер представления, вместо этого вызывая его метод initWithCoder:
Вы должны вызывать инициализатор, назначенный суперклассу, в вашем методе init
, который является init(nibName:bundle)
Примечание: хорошо, что оба эти параметра равны нулю. Также ваше переопределение init(coder:)
должно вызывать super.init(coder:)