Ich habe eine abstrakte Basisklasse für UIViewController
, von der alle Controller in meiner Anwendung erben. Ich habe auch eine Unterklasse von UIView
(View
), die ein paar zusätzliche gewünschte Eigenschaften, reactive Kakao awesomeness unter ihnen hinzufügt. Jetzt in meiner benutzerdefinierten Ansicht Controller-Klasse, mag ich loadView
außer Kraft zu setzen und dies zu tun:Benutzerdefinierte loadView- und Containeransichten
override func loadView() {
let customView = View(frame: UIScreen.mainScreen().bounds)
self.view = customView
}
und dann habe ich eine Eigenschaft rac_view
:
var rac_view: View {
return self.view as? View ?? View()
}
, so dass alle Subklassen meiner Ansicht Controller-Klasse haben können sofortigen Zugriff auf die View
Eigenschaft ohne zusätzliche Casting selbst durchführen zu müssen.
Alles funktioniert gut, bis ich loadView
überschreiben. Sobald ich tue, ich einen Absturz beim Anwendungsstart erhalten:
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'containerView is required.'
In meinem Drehbuch, mein erster View-Controller verfügt über mehrere Container Ansichten mit eingebetteten segues anderen Ansicht-Controller, die von meiner abstrakten Basisklasse erben. Aus irgendeinem Grund wirft das Überschreiben loadView
und das Festlegen meiner eigenen benutzerdefinierten Ansicht einen Haken in den Arbeiten, wenn es um Containeransichten geht, und ich weiß nicht warum.
Hat jemand so etwas schon mal gesehen oder erlebt?
Es könnte sein, weil Sie self.view zwei verschiedenen Dingen zuweisen, einmal zur benutzerdefinierten Ansicht und die andere zu rac_view. Haben Sie auch einen anderen Initialisierer als loadView ausprobiert? – Echizzle