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)に書き換えることで対応できました。

ここで疑問がでました。

  • なぜ、UIViewControllersuper.init()を呼べないのでしょうか?
  • 自分で Must call a designated initializer of the superclass '....' を起こすような親クラスを作ることは可能なのでしょうか?