Ich experimentiere damit, wie man Nib-Dateien zu einem UIViewController
lädt.
Ich habe eine separate Nib-Datei namens Email erstellt. Zuerst habe ich festgestellt, dass die Methode initWithNibName
nicht aufgerufen wird, wenn der View-Controller geladen wird. Also habe ich sie manuell aus der Methode viewDidLoad
aufgerufen, wie folgt:
[self initWithNibName:@"Email" bundle:[NSBundle mainBundle]];
Es hat nicht funktioniert. Außerdem habe ich eine Warnung erhalten, die besagt Ausdrucksergebnis nicht verwendet.
Ich habe im Internet recherchiert und bin auf diesen Artikel gestoßen und habe die Methode loadView
wie beschrieben implementiert:
- (void)loadView
{
[super loadView];
UINib *nib = [UINib nibWithNibName:@"Email" bundle:nil];
[nib instantiateWithOwner:self options:nil];
}
Die Methode wird aufgerufen, aber der View-Controller ist immer noch leer!
Kann mir jemand sagen, was ich hier übersehe und wie das gemacht werden kann?
Danke.
UPDATE:
Zunächst einmal vielen Dank für alle Antworten. Allerdings legen die Antworten von voromax und svena nahe, dass ich Segues entfernen und Nibs automatisch laden sollte, was ich nicht sehr mögen. Anils Antwort funktioniert und jetzt muss ich noch eine letzte Hürde überwinden.
Ich habe mehrere Nib-Dateien. Abhängig von der Auswahl des Benutzers sollte eine bestimmte Nib geladen werden. Also habe ich alle Nib-Dateien in das Array wie folgt platziert:
- (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 darauf zugreifen, indem man den Index verwendet, wie self.view = [nibs objectAtIndex(1)];
. Aber es wirft einen Fehler *Beendigung der App aufgrund einer unbehandelten Ausnahme 'NSInvalidArgumentException', Grund: '-[__NSArrayM _setViewDelegate:]: nicht erkannter Selektor gesendet an Instanz 0xd56fd20'*
Warum tritt dieser Fehler auf? Wenn es nicht möglich ist, bin ich für Vorschläge offen.
Nochmals vielen Dank. Und tut mir leid, dass ich das ein bisschen langgezogen habe.