Как добавить пользовательские инициализаторы в подклассы UIViewController
в Swift?Swift: пользовательские инициализаторы ViewController
Я создал вспомогательный класс UIViewController
, который выглядит примерно так:
class MyViewController : UIViewController
{
init(leftVC:UIViewController, rightVC:UIViewController, gap:Int)
{
self.leftVC = leftVC;
self.rightVC = rightVC;
self.gap = gap;
super.init();
setupScrollView();
setupViewControllers();
}
}
Когда я запускаю его я получаю фатальную ошибку:
fatal error: use of unimplemented initializer 'init(nibName:bundle:)' for class 'MyApp.MyViewController'
Я прочитал elewhere, что когда добавив пользовательский инициализатор, необходимо также переопределить init(coder aDecoder:NSCoder)
, поэтому давайте переопределим это значение init
и посмотрим, что получится:
override init(coder aDecoder: NSCoder)
{
super.init(coder: aDecoder);
}
Если я добавлю это, Xcode жалуется, что self.leftVC is not initialized at super.init call
. Поэтому я думаю, что это тоже не может быть решением. Поэтому мне интересно, как я могу добавить пользовательские инициализаторы должным образом в подкласс ViewController
в Swift (поскольку в Objective-C это, похоже, не проблема)?
Как вы пытаетесь создать экземпляр 'MyViewController'? –
Почему бы не создать экземпляр всего в viewDidLoad(), там вы можете инициализировать их так, как вы хотите – tudoricc
@MikePollard с dualViewCtrl = DualViewCtrl (leftVC: l, rightVC: r, gap: 50) ... Я уже выяснил, что мне нужно используйте инициализатор initWithNib. – BadmintonCat