最佳答案
如何在 Swift 中向 UIViewController
子类添加自定义初始化器?
我已经创建了 UIViewController
的一个子类,它看起来像这样:
class MyViewController : UIViewController
{
init(leftVC:UIViewController, rightVC:UIViewController, gap:Int)
{
self.leftVC = leftVC;
self.rightVC = rightVC;
self.gap = gap;
super.init();
setupScrollView();
setupViewControllers();
}
}
当我运行它时,我得到一个致命的错误:
致命错误: 对类‘ MyApp.MyViewController’使用未实现的初始化器‘ init (nibName: bundle:)’
我在其他地方读到过,当添加一个自定义初始化程序时,必须覆盖 init(coder aDecoder:NSCoder)
,所以让我们覆盖 init
,看看会发生什么:
override init(coder aDecoder: NSCoder)
{
super.init(coder: aDecoder);
}
如果我添加这个,Xcode 会抱怨 self.leftVC is not initialized at super.init call
。所以我想这也不是解决办法。因此,我想知道如何在 Swift 中正确地将自定义初始化器添加到 ViewController
子类(因为在 Objective-C 中这似乎不是一个问题) ?