Wie fügen Sie benutzerdefinierte Initialisierungen zu UIViewController
Unterklassen in Swift hinzu?Swift: Benutzerdefinierte ViewController-Initialisierer
ich eine Unterklasse von UIViewController
erstellt haben, die etwa wie folgt aussieht:
class MyViewController : UIViewController
{
init(leftVC:UIViewController, rightVC:UIViewController, gap:Int)
{
self.leftVC = leftVC;
self.rightVC = rightVC;
self.gap = gap;
super.init();
setupScrollView();
setupViewControllers();
}
}
Wenn ich es laufen lasse, bekomme ich einen fatalen Fehler:
fatal error: use of unimplemented initializer 'init(nibName:bundle:)' for class 'MyApp.MyViewController'
ich gelesen habe, dass, wenn elewhere Hinzufügen eines benutzerdefinierten Initialisierer muss man auch übersteuern init(coder aDecoder:NSCoder)
also lass uns das überschreiben init
und sehen, was passiert:
override init(coder aDecoder: NSCoder)
{
super.init(coder: aDecoder);
}
Wenn ich dies hinzufügen, beschwert Xcode, dass self.leftVC is not initialized at super.init call
. Ich denke, das kann auch nicht die Lösung sein. Also frage ich mich, wie kann ich benutzerdefinierte Initialisierungen richtig zu einer ViewController
Unterklasse in Swift hinzufügen (da in Objective-C scheint dies kein Problem zu sein)?
Wie können versuchen Sie Ihr 'MyViewController' zu instanziiert? –
Warum instantiieren Sie alles in viewDidLoad(), dort können Sie sie so initialisieren, wie Sie wollen – tudoricc
@MikePollard mit dualViewCtrl = DualViewCtrl (leftVC: l, rightVC: r, lücke: 50) ... Ich habe schon herausgefunden, dass ich muss Verwenden Sie den InitWithNib-Initialisierer. – BadmintonCat