UIViewController
Swiftのサブクラスにカスタム初期化子をどのように追加しますか?
UIViewController
次のようなサブクラスを作成しました。
class MyViewController : UIViewController
{
init(leftVC:UIViewController, rightVC:UIViewController, gap:Int)
{
self.leftVC = leftVC;
self.rightVC = rightVC;
self.gap = gap;
super.init();
setupScrollView();
setupViewControllers();
}
}
実行すると、致命的なエラーが発生します。
致命的なエラー:クラス「MyApp.MyViewController」に実装されていない初期化子「init(nibName:bundle :)」を使用
カスタム初期化子を追加するときにオーバーライドinit(coder aDecoder:NSCoder)
する必要があることinit
をどこかで読んだので、それをオーバーライドして何が起こるか見てみましょう:
override init(coder aDecoder: NSCoder)
{
super.init(coder: aDecoder);
}
これを追加すると、Xcodeはそれを文句を言いself.leftVC is not initialized at super.init call
ます。ですから、それも解決策にはなり得ないと思います。ではViewController
、Swiftのサブクラスにカスタム初期化子を適切に追加するにはどうすればよいのでしょうか(Objective-Cではこれは問題ではないようです)。
MyViewController
か?