12

ストーリーボードを使用していくつかのコンテナビューを保持する「コンテナ」viewControllerがあります。そのコンテナビューのそれぞれには、埋め込まれたビューコントローラのビューへのリンクがあります。

私は大きなプロジェクトに取り組んでいるので、ストーリーボードファイルは巨大で、多くの「子」viecontrollersビューレイアウトが含まれていることがわかりました。数人が同時に作業する必要がある場合、そのファイルでの作業は問題になります。それは私には良くありません。ビューコントローラーのxibファイルを各コンテナービューにロードし、ストーリーボードを使用する方法があるかどうかを知りたいです。

つまり、ストーリーボード自体に保持するのではなく、ビューコントローラごとに.xibファイルを作成し、ストーリーボードのコンテナビューにリンクします。

ありがとう、

4

2 に答える 2

5

はい、できます。いくつかの観察:

  1. 必要なのは、NIB を使用するときに使用していたようなコードを挿入することだけです。コンテナーの場合、それは典型的なコンテナー メソッドを意味します。コードによる封じ込めを行っていない場合は、ビュー コントローラー プログラミング ガイドの「カスタム コンテナー ビュー コントローラーの作成」を参照してください。要するに、ストーリーボード以外のシーンに移行する (またはストーリーボード以外の子ビュー コントローラーを追加する) ときは、NIB ベースの環境でいつも使用していたようにコーディングするだけです。この NIB ベースのシーンを絵コンテで表現することはできません。ただし、NIB でいつも行うようにコントローラーを取得するだけです。

    SecondViewController *controller = [[SecondViewController alloc] initWithNibName:nil bundle:nil];
    
  2. 明らかに、ストーリーボードを使用する利点の多くが失われます (たとえば、親シーンのコンテナー ビューに基づいて子シーンのサイズを変更するなど)。しかし、「それらをストーリーボードのコンテナ ビューにリンクする」ことができるかどうかという質問への回答では、ストーリーボード自体でこの関係を表すことはできませんが、プログラムでリンクします。

  3. 別々のチームが単一シーン環境で作業している場合は、この NIB アプローチを使用できます。ただし、論理チームごとに 1 つずつ、複数のストーリーボードを用意することも検討する必要があります。この NIB アプローチの場合と同様に、ストーリーボード間を移行するときにコードに頼る必要がありますが、チームの 1 つに対処するシーンが複数ある場合は、プロジェクトのその部分でストーリーボードのメリットを享受できます。次の絵コンテの最初のシーンに行きたいときは、次のことができます。

    UIStoryboard *secondaryStoryboard = [UIStoryboard storyboardWithName:@"SecondStoryboard" bundle:nil];
    SecondViewController *controller = [secondaryStoryboard instantiateInitialViewController];
    
  4. parentStoryboardお子様がストーリーボードの新しいシーンに移行する必要がある場合、独自のプロパティを子コントローラーに追加すると便利ですinstantiateViewControllerWithIdentifier。明らかに、新しいコントローラーに移行していない場合は、その必要はないかもしれませんが、移行している場合は、UIStoryboardプロパティがあると便利です。

于 2012-12-27T15:16:54.170 に答える