Ich experimentiere mit dem Laden von NIB-Dateien in eine UIViewController
.Laden einer NIB-Datei in einen UIViewController
Ich habe eine separate Nib-Datei mit dem Namen E-Mail erstellt. Zuerst bemerkte ich, dass beim Laden des View-Controllers die Methode initWithNibName
nicht aufgerufen wird. Also rief ich sie aus dem viewDidLoad
Verfahren manuell wie diese,
[self initWithNibName:@"Email" bundle:[NSBundle mainBundle]];
Es funktionierte nicht. Auch ich bekam eine Warnung, die Ausdruckresultat unbenutzt sagt.
Und ich im Internet gesucht und kam über this Artikel und implementiert, um die loadView
Verfahren als wie so beschrieben,
- (void)loadView
{
[super loadView];
UINib *nib = [UINib nibWithNibName:@"Email" bundle:nil];
[nib instantiateWithOwner:self options:nil];
}
Die Methode wird aufgerufen, aber immer noch der View-Controller ist leer!
Kann mir jemand sagen, was ich hier übersehen habe und wie das gemacht werden kann?
Vielen Dank.
UPDATE:
Zunächst einmal vielen Dank für die Antworten. Jedoch voromax und svena 's Antworten deuten darauf hin, dass ich segues entfernen und nibs automatisch laden sollte, die ich nicht sehr mag. Anils Antwort funktioniert und ich habe jetzt eine letzte Hürde.
Ich habe mehrere Nib-Dateien. Abhängig von der Benutzerauswahl sollte es eine bestimmte Spitze laden. Also, was ich versucht war, legte alle nibs innerhalb des Arrays wie so,
- (void)loadView
{
[super loadView];
NSArray *nibs = [[NSArray alloc] initWithObjects:
[[NSBundle mainBundle] loadNibNamed:@"Facsimile" owner:self options:nil],
[[NSBundle mainBundle] loadNibNamed:@"Email" owner:self options:nil],
[[NSBundle mainBundle] loadNibNamed:@"Memorandum" owner:self options:nil],
[[NSBundle mainBundle] loadNibNamed:@"ProjectMemo" owner:self options:nil], nil];
self.view = [nibs objectAtIndex:0];
}
und Zugang es seinen Index wie diese self.view = [nibs objectAtIndex:1];
verwenden. Aber es wirft einen Fehler * Beenden App aufgrund der nicht abgefangenen Ausnahme 'NSInvalidArgumentException', Grund: '- [__ NSArrayM _setViewDelegate:]: unerkannter Selektor an Instanz 0xd56fd20 gesendet *
Warum ist dieser Fehler auf? Wenn es nicht möglich ist, bin ich offen für Vorschläge.
Nochmals vielen Dank. Und tut mir leid, dass ich das ein bisschen herausgezogen habe.
Sie immer noch nicht die Storyboards und benutzerdefinierte Logik in Ihrer Frage erwähnt, wird nicht jeder alle Kommentare lesen ... Siehe die aktualisierte Antwort – voromax