Container View を使用して別の View Controller を開始したかったのですが、プログラムで割り当てる方法に関する情報が見つかりません。ユーザー インターフェイスから実行できますが、coes を使用して作成し、それを UIviewController にリンクするにはどうすればよいでしょうか? 通常の UIview のように動作しますか?
2 に答える
私があなたの質問に従うと、コードでView Controllerコンテインメントを使用する方法を尋ねています。View Controller Programming GuideのCreating Custom Container View Controllersセクションをチェックすることをお勧めします。これには、子View Controllerの追加を含む、これを行うためのコードが示されています。
[self addChildViewController:content]; // 1
content.view.frame = [self frameForContentController]; // 2
[self.view addSubview:self.currentClientView];
[content didMoveToParentViewController:self]; // 3
子View Controller(少なくとも画面全体を占有しないもの)を使用する場合、子View UIView
Controllerの境界を指示する親View Controllerのビューに があると便利です。一連のタスクを大幅に簡素化します。上記のコード スニペットでは、サブビューが呼び出されていると想定していますframeForContentController
。
または、1 つを削除します (このコード スニペットでcontent
は、UIViewController *
削除される子コントローラーを参照するのは です):
[content willMoveToParentViewController:nil]; // 1
[content.view removeFromSuperview]; // 2
[content removeFromParentViewController]; // 3
子コントローラーを別の子コントローラーに置き換えたい場合は、次のようにします。
- (void) cycleFromViewController: (UIViewController*) oldC
toViewController: (UIViewController*) newC
{
[oldC willMoveToParentViewController:nil]; // 1
[self addChildViewController:newC];
newC.view.frame = [self newViewStartFrame]; // 2
CGRect endFrame = [self oldViewEndFrame];
[self transitionFromViewController: oldC toViewController: newC // 3
duration: 0.25 options:0
animations:^{
newC.view.frame = oldC.view.frame; // 4
oldC.view.frame = endFrame;
}
completion:^(BOOL finished) {
[oldC removeFromParentViewController]; // 5
[newC didMoveToParentViewController:self];
}];
}
WWDC 2011 - Implementing UIViewController Containmentもチェックすることをお勧めします。
親VCが所有する通常のUIViewを使用するだけです。を使用して子 VC を作成し、それを親 VC に追加してから、VC のメソッドでaddChildViewController:
、子 VC のビューをサブビューとしてコンテナー ビューに追加します。addSubview:
viewDidLoad