2

説明してください、なぜ私はaddChildViewController:メソッドを使用する必要がありますか?
結局のところ、私がサブビューをビューに配置すると[some_obj.view addSubview:some_view]、これらのサブビューは彼のコントローラーについて知っています。

ありがとう。

4

1 に答える 1

1

addChildViewController

呼び出す必要があります。これは、親コントローラーが有効期間/バックグラウンド管理のために子ビューコントローラーへの参照を保持する必要があるためです...この参照は、サブビューとして追加された場合、UIView から取得できない/取得すべきではありません

また、子から親を参照することもできますself.parentViewController

アップルは次のように述べていますaddChildViewController

指定されたView Controllerを子として追加します。新しい子View ControllerがすでにコンテナView Controllerの子である場合、追加される前にそのコンテナから削除されます。このメソッドは、カスタム コンテナ ビュー コントローラの実装によってのみ呼び出されることを意図しています。このメソッドをオーバーライドする場合は、実装で super を呼び出す必要があります。

追加/削除については、この優れたカテゴリを参照でき、いつ呼び出すかを心配する必要はありません:

UIViewController + コンテナ

- (void)containerAddChildViewController:(UIViewController *)childViewController {

    [self addChildViewController:childViewController];
    [self.view addSubview:childViewController.view];
    [childViewController didMoveToParentViewController:self];

}

- (void)containerRemoveChildViewController:(UIViewController *)childViewController {

    [childViewController willMoveToParentViewController:nil];
    [childViewController.view removeFromSuperview];
    [childViewController removeFromParentViewController];

}
于 2013-04-20T21:26:19.680 に答える