我在从 obj-c 转换代码时遇到了问题。
controller = [[[self class] alloc] initWithNibName:name bundle:nil];
我试过这样的事情
self.init(nibName: name, bundle: nil)
但它给了我一个错误:使用元类型值构造类类型为“BaseViewController”的对象必须使用“必需”初始化程序。 我该如何解决这个问题?
最佳答案
正如 Ronak 指出的那样,您需要添加 init(coder aDecoder: NSCoder!)
方法。除此之外,您还需要添加 init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?)
方法。所以你的整体代码看起来像这样:
class func customInitializer() -> ViewController {
return self.init(nibName: nil, bundle: nil)
}
required override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
关于ios - 初始化 Controller 的自类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37409906/