WWDC 2011セッション102では、Appleは、UITabBarController
,UINavigationController
などに類似した、カスタムView Controllerコンテナを作成するView Controller Containmentを導入しました。View Controller ContainmentはiOS 5ではどのように機能しますか?
私はいくつかの例を見ました。このパターンに関連した方法の混乱がありますが、それらを正確に把握するのは少し難しかったです。私はここに私が行っていると思うことを投稿し、コミュニティが私の疑惑を確認するかどうか確認するつもりです。
シナリオ1:
[vc willMoveToParentViewController:self];
[self addChildViewController:vc];
[self.view addSubview:vc.view]; // or something like this.
[vc didMoveToParentViewController:self];
新しい親ビューコントローラにいない親からの移行最初の2行は、与えられた順序で発生する必要がありますか、またはそれらを逆転させることができますか?
シナリオ2:なし親ビューコントローラに親ビューコントローラからの移行
[vc willMoveToParentViewController:nil];
[vc.view removeFromSuperview];
[vc removeFromParentViewController];
また、[vc didMoveToParentViewController:nil]
を呼び出すために必要ですか?セッション102 の例では、このシナリオではが実行されませんでしたが、省略されたかどうかはわかりません。
シナリオ3:各親ビューコントローラ内のロジックがカプセル化されるので、これは、おそらく、次のように発生する別の
1つの親ビューコントローラから移動します。
// In the old parent
[vc willMoveToParentViewController:nil];
[vc.view removeFromSuperview];
[vc removeFromParentViewController];
// In the new parent
[vc willMoveToParentViewController:self];
[self addChildViewController:vc];
[self.view addSubview:vc.view];
[vc didMoveToParentViewController:self];
質問
私の主な質問はこれです:これは一般的には、ビューコントローラの封じ込めがどのように動作するかをですか?上記の力学は正しいですか?
addChildViewController
に電話する前にwillMoveToParentViewController
に電話する必要がありますか?これは私にとっては論理的な秩序のようですが、厳密に必要ですか?
に電話する前にremoveFromParentViewController
に電話をする必要がありますか?
問題は、ios5タグを追加しようとしたときに誤って投稿を追加した編集者が入力/編集を完了していないにもかかわらずでした。私はそれを削除しようとしたが、私はそれを削除するために投票することしかできないことを発見した。 –