如何在 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();
}
}
当我运行它时,我得到一个 fatal error :
fatal error: use of unimplemented initializer 'init(nibName:bundle:)' for class 'MyApp.MyViewController'
我在其他地方读到过,在添加自定义初始化程序时,还必须覆盖 init(coder aDecoder:NSCoder)
所以让我们覆盖 init
并看看会发生什么:
override init(coder aDecoder: NSCoder)
{
super.init(coder: aDecoder);
}
如果我添加这个,Xcode 会提示 self.leftVC 在 super.init 调用时没有初始化
。所以我想这也不是解决方案。所以我想知道如何将自定义初始化程序正确添加到 Swift 中的 ViewController
子类(因为在 Objective-C 中这似乎不是问题)?
最佳答案
解决了!必须调用指定的初始化程序,在这种情况下是带有 nibName 的初始化程序,显然 ...
init(leftVC:UIViewController, rightVC:UIViewController, gap:Int)
{
self.leftVC = leftVC
self.rightVC = rightVC
self.gap = gap
super.init(nibName: nil, bundle: nil)
setupScrollView()
setupViewControllers()
}
关于ios - Swift:自定义 ViewController 初始化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25527311/