我遇到了从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)
}
您需要在 VC 中添加初始值设定项方法,如下所示:
required init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)
}
也可以在这里查看:
http://themainthread.com/blog/2014/08/initializing-view-controllers-in-swift.html
希望它能有所帮助:)