NibファイルからUIViewController
を作成しようとしています。 Googleでは、NibからしかUIViewをロードできないことがわかりました。
しかし、ファイル所有者がViewController
に設定された(UIViewの)Nibファイルを作成できると示唆する人もいます。
それは私がやったことであり、クラッシュはありませんでしたが、ビューは表示されません。
編集:このようにviewcontroller
をプッシュしようとしました
self.navigationController!.pushViewController(CoolViewController(), animated: true );
しかし、プッシュしても黒い画面が表示される
XCode 6.3-ストーリーボードを使用しない
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
サブクラスに対して複数のペン先を持つこともできます。
これを試して、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];