2

parentViewControllerを取得しました。

parentViewControllerには3つの子があります。

AnnController、BobController、CharlieController

(本名ではありません)

いつでも、そのようなコントローラーのビューのみが存在する可能性があります。移行は次の方法で行われます。

[self transitionFromViewController:fromController toViewController:toViewController duration:duration options:options animations:animations completion:^(BOOL finished)

すべてがうまくいきます。

しかし、親の子としてアン、ボブ、チャーリーを追加する意味は何ですか?

最初は、transitionFromViewController中にviewWillAppearとviewWillDisappearが自動的に呼び出されるようにしたと思いました。

ただし、viewControllerが子であるかどうかに関係なく、とにかく呼び出されます。

親が呼び出されたときにviewWillAppearとviewWillDisappearが呼び出された可能性があります。しかし、それは簡単です。

もちろん、ParentController.viewのビュー階層に実際にあるビューのみが、viewWillAppearとviewWillDisappearが正しく呼び出されますか?またはそれは?

では、アン、ボブ、チャーリーが親コントローラーの子であるという事実は、正確には何をしているのでしょうか。

親のviewWillAppearで、childControllerのビューが階層の一部である場合にのみ、子のすべてを調べて、viewWillAppearを呼び出しますか?または何?

実際にその事実は何ですか

注:ビューの封じ込めの意味をよく知っています。私はそれが正確に何をするのか尋ねましたか?たとえば、答えの1つは、ローテーションを渡すと言っていました。はい。しかし、それは、ビューがparentViewController.view階層にあるすべての子または唯一の子に対して行われますか?または何?

4

1 に答える 1

2

短い回答:追加すると、 ViewControllerchildViewControllerのイベントを子を持つ定義済みの他のコントローラにリダイレクトできます。

長い答え: addChildViewControllerの一部でiOS 5あり、それ以降です。「」と呼ばれる機能ですview controller containment。この背後にある基本的な考え方は、ViewControllerを独自の他のViewControllerに埋め込むことができるということです。tabViewControllerそれはあなたがあなた自身またはcustomNavigationController例えばのために書くことを可能にするのでそれは強力です

主なことView controller containmentは、含まれているすべてのViewControllerが適切なメッセージを確実に取得できるようにすることです。簡単な例は、デバイスを回転させる場合です。回転を追加しなかった場合addChildViewController、回転の変更イベントはビュー階層に渡されません。

あなたが言及している呼び出し(viewWillAppear, viewWillDisappear)のようなビューサイクルは、ビューコントローラによって管理されるため、別の話になります。

カスタムコンテナコントローラーの機能をよく理解するには、公式ドキュメントを参照してください。

于 2012-10-24T08:18:16.300 に答える