UIViewControllerのサブクラスのカスタムinitでsuper.initを呼べないのは何故ですか?
class HogeVC: UIViewController {
var id: Int?
init(id: Int) {
super.init() // Must call a designated initializer of the superclass 'UIViewController'
self.id = id
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
}
上記コード内のコメントにも記載しましたが、
Must call a designated initializer of the superclass 'UIViewController'
というエラーがでました。
この問題は
super.init()
を
super.init(nibName: nil, bundle: nil)
に書き換えることで対応できました。
ここで疑問がでました。
- なぜ、
UIViewController
はsuper.init()
を呼べないのでしょうか? - 自分で
Must call a designated initializer of the superclass '....'
を起こすような親クラスを作ることは可能なのでしょうか?