Laden ViewController aus der xib-Datei
Hatte ich eine MyViewController.swift
und ein MyViewController.xib
präsentieren das layout MyViewController.
Ich habe versucht, verschiedene Methoden, um dieses zu laden-view-controller inklusive:
//1
let myVC = UINib(nibName: "MyViewController", bundle:
nil).instantiateWithOwner(nil, options: nil)[0] as? MyViewController
//2
let myVC = NSBundle.mainBundle().loadNibNamed("MyViewController", owner: self, options: nil)[0] as? MyViewController
//3
let myVC = MyViewController(nibName: "MyViewController", bundle: nil)
Die Dritte ist die einzige erfolgreiche Initialisierung, aber die beiden vorherigen sind, verursachen Fehler:
Terminating app due to uncaught exception 'NSUnknownKeyException',
Grund: '[ setValue:forUndefinedKey:]:
Klasse ist nicht die key-value-coding-konform für den Schlüssel XXX.
Was ist Los mit dieser be-Methoden?
sehen Sie den vollständigen code
Überprüfen Sie alle Steckdosen, die Sie erstellt haben, die im Zusammenhang mit Komponenten. Stellen Sie sicher, es sollte keine Ausrufezeichen im
bluenowhere: haben Sie eine Antwort suchen?
Ich glaube, die ersten beiden Methoden initialize Ihr "MyViewController" Klasse UIViewController und nicht hook up die outlets und Aktionen korrekt, so stürzt die app versuchen, Sie zu finden. Initialisieren Sie mit Ihrer Klasse' Konstruktor Haken, bis die Klasse Steckdosen an der Spitze, so dass alles funktioniert wie es sollte.
Überprüfen Sie alle Steckdosen, die Sie erstellt haben, die im Zusammenhang mit Komponenten. Stellen Sie sicher, es sollte keine Ausrufezeichen im
Outlets
im connection inspector
in Ihrem .xib
- Datei.bluenowhere: haben Sie eine Antwort suchen?
Ich glaube, die ersten beiden Methoden initialize Ihr "MyViewController" Klasse UIViewController und nicht hook up die outlets und Aktionen korrekt, so stürzt die app versuchen, Sie zu finden. Initialisieren Sie mit Ihrer Klasse' Konstruktor Haken, bis die Klasse Steckdosen an der Spitze, so dass alles funktioniert wie es sollte.
InformationsquelleAutor bluenowhere | 2016-05-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Swift 3
- oder push-in-navigation-controller
Art! Es ist die richtige Antwort auf die Frage "Wie lade ich das layout einen ViewController aus einer XIB-Datei'. Aber die ursprüngliche Frage ist nicht eindeutig als OP scheint nicht zu unterscheiden zwischen (1) laden Sie das layout (Ansicht) eines programmgesteuert instanziiert ViewController aus einer XIB, und (2) einlegen der ViewController Instanz selbst aus der XIB. AechoLiu s Antwort ist die richtige Antwort auf die zweite interpretation 🙂
fairer Punkt!
wenn die vc-name ist dasselbe wie-xib-Datei, die Sie verwenden können (nibName: nil Bundles: nil) und es wird funktionieren
InformationsquelleAutor Marcos Reboucas
Beachten Sie die
File's Owner
. In Ihrem Fall, dieFile's Owner
istMyViewController
.Und die folgenden codes, wenn es ausführt, die in der Klasse
Foo
.Es passieren
self
alsowner
. So, dieFile's Owner
istFoo
, nichtMyViewController
. Dann, fürFoo
Klasse, dieseIBOutlet
verbunden werden kannFoo
ist es fürMyViewController
. So, es stürzt ab.InformationsquelleAutor AechoLiu
Das problem nicht mit den Methoden...Sie haben wahrscheinlich gehalten eine Steckdose(XXX) verbunden, die für einige uielement und haben es entfernt von der entsprechenden controller...ich bin hinzufügen, das Beispiel unten...
oben-Taste ist angeschlossen controller nun aber, wenn ich kommentieren outlet
meine app stürzt ab
so versuchen, Steckdose(xxx) fehlt viewcontroller, sondern ist in der xib-Datei.Hoffe es hilft 🙂
InformationsquelleAutor sanman
Ich hatte das gleiche problem. Die automatisch generierte xib hatte einen UIView. Löschen Sie die Ansicht, add new view controller an den xib-legen Sie die view-controller-Klasse, die Sie wollen, und verbinden Sie dann die Verkaufsstellen. Nach all diesem kann man die codes benutzen, die oben bereitgestellt wird, um eine Instanz der view-controller, wie diese:
InformationsquelleAutor Archangel
Versuchen Sie folgenden code,
//1
ODER
//2
Dies funktionieren wird.
Ja, wie Sie sehen können die verschiedenen Fähigkeiten für das schreiben von code. Einige Zeit wird es nicht erlauben, zu initialisieren, innerhalb eines code-Zeilen.
InformationsquelleAutor Jigar Tarsariya