webentwicklung-frage-antwort-db.com.de

Laden von UIViewController "aus" der Nib-Datei

Ich versuche, aus einer Nib-Datei ein UIViewController zu erstellen. Bei Google habe ich festgestellt, dass ich nur eine UIView von Nib laden kann.

Einige schlagen jedoch vor, dass ich eine Nib-Datei (von UIView) erstellen könnte, deren Dateieigentümer auf unser ViewController festgelegt ist.

Das habe ich getan, ich habe keine Abstürze bekommen, aber die Ansicht wird einfach nicht angezeigt.

EDIT: Versucht, die viewcontroller so zu schieben

self.navigationController!.pushViewController(CoolViewController(), animated: true );

Aber es zeigt immer noch schwarzen Bildschirm, wenn es gedrückt wird

XCode 6.3 - Storyboards nicht verwenden

20
JayVDiyk

Sie müssen Ihr ViewController zuweisen und es dann initialisieren, indem Sie dem iOS den Namen der Schreibfeder mitteilen.

Ich sehe, dass Sie Swift verwenden. Ich fürchte, ich kenne Swift nicht, nur Objective-C. Aber so würde es in Objective-C gemacht:

[self.navigationController pushViewController [[[CoolViewController alloc] initWithNibName: @"CoolDesign" bundle: nil] autorelease];

... wobei "CoolDesign" der Basisname Ihrer Feder ist. Das heißt, Sie erstellen CoolDesign.xib im Interface Builder. Xcode kompiliert den XML-Text-xib in CoolDesign.nib und weist dann initWithNibName an, nur @ "CoolDesign" zu öffnen.

Es reicht nicht aus, Interface Builder nur mitzuteilen, dass ein Designdokument ein UIViewController ist. Während das iOS im Prinzip herausfinden könnte, was Sie meinen, könnten Sie im Prinzip auch mehrere Schreibfedern für eine einzelne UIViewController -Unterklasse haben.

18
Mike Crawford

Versuchen Sie dies, Sie können ein UIViewController mit nibName: Laden.

Swift

self.navigationController!.pushViewController(CoolViewController(nibName: "CoolViewControllerNibName", bundle: nil), animated: true )

Ziel-C

CoolViewController*coolViewCtrlObj=[[CoolViewController alloc] initWithNibName:@"CoolViewControllerNibName" bundle:nil];
[self.navigationController pushViewController:coolViewCtrlObj  animated:YES];
25
Sudhin Davis