我有UITableViewController
的子类:
class ClassA : UITableViewController {
// MARK: Init
convenience init() {
self.init(style: .Grouped)
}
convenience init(form: FormDescriptor) {
self.init()
self.form = form
}
override init(style: UITableViewStyle) {
super.init(style: style)
}
override init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
baseInit()
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
baseInit()
}
}
我创建了ClassA
的子类:
class ClassB : ClassA {
override init(style: UITableViewStyle) {
super.init(style: style)
}
convenience init() {
self.init(style: .Grouped)
self.form = getForm()
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
我尝试使用ClassB
中使用UITableViewController
的初始化程序初始化UITableViewStyle
。运行代码时,我得到:
致命错误:使用未实现的初始化程序
init(nibName:bundle:)
如何使用ClassB
中的style
属性初始化UITableViewController
?
答案 0 :(得分:2)
将该代码放入ClassB
:
override init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}
然后您将能够按如下方式初始化ClassB
:
let b = ClassB(style: UITableViewStyle.Grouped)