web-dev-qa-db-ja.com

UIViewControllerを「ペン先」ファイルからロードする

NibファイルからUIViewControllerを作成しようとしています。 Googleでは、NibからしかUIViewをロードできないことがわかりました。

しかし、ファイル所有者がViewControllerに設定された(UIViewの)Nibファイルを作成できると示唆する人もいます。

それは私がやったことであり、クラッシュはありませんでしたが、ビューは表示されません。

編集:このようにviewcontrollerをプッシュしようとしました

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

しかし、プッシュしても黒い画面が表示される

XCode 6.3-ストーリーボードを使用しない

20
JayVDiyk

ViewControllerを割り当て、iOSにnibの名前を伝えることで初期化する必要があります。

Swiftを使用しているようです。私はSwiftを知らず、objective-cしか知りません。しかし、これはそれがobjective-cでどのように行われるかです:

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

...ここで、「CoolDesign」はペン先のベース名です。つまり、Interface BuilderでCoolDesign.xibを作成し、XcodeがXML-text-xibをCoolDesign.nibにコンパイルし、initWithNibNameに@ "CoolDesign"だけを開くように指示します。

設計ドキュメントがUIViewControllerであることをInterface Builderに伝えるだけでは十分ではありません。原則としてiOSはあなたの意味を理解できますが、原則として単一のUIViewControllerサブクラスに対して複数のペン先を持つこともできます。

18
Mike Crawford

これを試して、nibName:UIViewControllerをロードできます

スイフト

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

Objective-C

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