2012-02-06 13 views
28

私は以前に作成したコントロールをXIBファイルに配置したUIViewControllerサブクラスを持っています。Xcodeのストーリーボードを使用して、そのデザインにXIBを使用するビューコントローラーをインスタンス化します。

私はこのストーリーボードでこのビューコントローラを使用したいと思いますが、ストーリーボードでビューコントローラのクラス名を指定することはできますが、XIBをロードするようには言えません。

私はむしろXIBからストーリーボードまですべてを移動するのではなく、別のXIBに保管しておきたいと思います。

私のXIBを読み込むために、このUIViewControllerをストーリーボードで取得するにはどうすればよいですか?

答えて

49
  1. ストーリーボードのビューコントローラに含まれるビューを削除します。

  2. 次に、ビューコントローラクラスと同じ名前 のnibファイルを設定して、ビューを提供します。たとえば、ビューコントローラ クラスがMyViewControllerと呼ばれる場合、xibファイルには MyViewController.xibという名前を付けます。

EDITスウィフトシード5は、それが探している.xibファイルの名前を狂わせるので、このテクニックを壊し始めたこと注意。回避策については私の答えを参照してください:https://stackoverflow.com/a/25539016/341994基本的には、この名前の一致は、iOS 8で壊れたでしたが、Appleは悔い改めて修正しました。iOS 9で再び動作します。

+0

これは、どのようにしてView ControllerがNIBをロードするのですか? – user1175914

+4

ちょうどそれを試してみてください!次に、私の本を読んで、View Controllerがペン先を読み込む方法を学びます。http://www.apeth.com/iOSBook/ch19.html – matt

+0

@ user1175914 UIViewControllerのデフォルトの実装では、クラス名で指定されたXIBが呼び出されます。したがって、ObjCランタイムがストーリーボードでView Controllerを見つけられない場合、デフォルトでNIBを呼び出すようにする必要があります。または、loadNibNamed:または何かを呼び出すことによって、NIBローディングの独自の実装を提供できます。 – KPM

関連する問題