Jak dodać niestandardowe inicjatory do podklas UIViewController
w Swift?Swift: niestandardowe inicjalizatory ViewController
I utworzeniu klasy sub UIViewController
, który wygląda mniej więcej tak:
class MyViewController : UIViewController
{
init(leftVC:UIViewController, rightVC:UIViewController, gap:Int)
{
self.leftVC = leftVC;
self.rightVC = rightVC;
self.gap = gap;
super.init();
setupScrollView();
setupViewControllers();
}
}
Kiedy uruchomić go otrzymuję błąd krytyczny:
fatal error: use of unimplemented initializer 'init(nibName:bundle:)' for class 'MyApp.MyViewController'
Czytałem elewhere że kiedy dodając niestandardowy inicjator, należy również zastąpić init(coder aDecoder:NSCoder)
, więc zmieńmy to init
i zobaczmy, co się stanie:
override init(coder aDecoder: NSCoder)
{
super.init(coder: aDecoder);
}
Jeśli dodam to, Xcode skarży się, że self.leftVC is not initialized at super.init call
. Myślę więc, że to też nie może być rozwiązanie. Zastanawiam się, w jaki sposób można poprawnie dodać niestandardowe inicjalizatory do podklasy ViewController
w Swift (ponieważ w Objective-C nie wydaje się to problemem)?
Jak starasz się swoją instancję 'MyViewController'? –
Dlaczego nie tworzyć wszystkiego w viewDidLoad(), tam możesz zainicjować je tak, jak chcesz – tudoricc
@MikePollard z dualViewCtrl = DualViewCtrl (leftVC: l, rightVC: r, gap: 50) ... Już się dowiedziałem, że muszę użyj inicjalizatora initWithNib. – BadmintonCat