9

iPhone プロジェクトでは、Xcode ストーリーボードを使用して、いくつかのビューをメイン スクロール ビューに埋め込んでいます。包含ビューも「埋め込みセグエ」であると聞いたことがあります。必ずしも他の子コントローラーを埋め込む必要はありません。カスタム ビューを作成し、それらのカスタム サブビューに元の子コントローラーのロジックを含めることができます。(ここに投稿した後、簡単にできると思うので、そうするだけだと思います。)しかし、私はすでにコードを作成しており、それを維持するのがどれほど簡単か、または難しいかを知りたいと思っています。

スクロール ビューのコンテンツはメイン画面の境界よりも大きいため、コンテナー ビューをストーリーボードにレイアウトするのは困難です。それを解決するには3つの方法が考えられます。どちらでもいい

  1. スクロール ビューを上下にドラッグし、そこにコンテナー ビューを配置します。
  2. スクロール ビューでビューをドラッグし、メイン コントローラーの viewDidLoad でフレームのサイズを変更するだけです。(そして、自動レイアウトを使用している場合は、そこに自動レイアウトを追加します)しかし、そもそもストーリーボードと埋め込みセグエを使用する利点を無視しているようです。しかし、子ビュー コントローラーとやり取りする必要がある場合は、#3 よりも簡単に思えます。
  3. ストーリーボードを忘れて、Containing コントローラー ロジックを記述するだけです (WWDC 2012 のビデオ UIViewController Containment の実装で説明されているように) が、これは複雑に見えます。

Xcode で埋め込みセグエを作成する方法はありますか? 絵コンテでレイアウトを見ることはできませんが、少なくとも #3 よりは簡単で、#2 のように上下にドラッグする必要はありません。

4

2 に答える 2

31

WWDC には 1 時間のビデオがあることを理解しています。しかし、彼らの他のビデオを見たことがあれば、時間が複雑さと直接関係していないことは明らかです。これは、プログラムでコンテナー (または子サブ ビュー コントローラー) を使用する方法です。

[self addChildViewController:child];        // 1
[self.view addSubview:child.view];          // 2
[child didMoveToParentViewController:self]; // 3

サブビューを追加する場合と比べて、非常にシンプルで、わずか 2 行の追加コードです。あなたが言ったように、ストーリーボード ソリューションがありますが、複雑さによっては、コードを使用してこれを行う方が簡単な場合があります。それは本当にあなたの好みに帰着します。

ビューを追加してアニメーション化する場合はdidMoveToParentViewController、完了ブロックで最後の呼び出しを行う必要があります (つまり、アニメーションが完了した後)。

于 2013-09-24T13:50:41.157 に答える