我遇到了从obj-c转换代码的问题。
controller = [[[self class] alloc] initWithNibName:name bundle:nil];
我尝试过这样的事情
self.init(nibName: name, bundle: nil)
但它给了我一个错误:构造具有元类型值的类类型'BaseViewController'的对象必须使用'required'初始值设定项。 我该如何解决这个问题?
答案 0 :(得分:1)
您需要在VC中添加初始化方法,如下所示:
required init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)
}
另请查看:
http://themainthread.com/blog/2014/08/initializing-view-controllers-in-swift.html
希望它会有所帮助:)
答案 1 :(得分:1)
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)
}