カスタムコンテナビューコントローラを使用します。したがって、メインシーンに「コンテナビュー」を追加します。ターゲットがiOS6の場合、ストーリーボードを編集するときに、カスタムのコンテナービューコントローラーのシーンにドラッグできる特別な「コンテナービュー」オブジェクトがあります。
iOS 5の場合、(a)最初の子シーンを手動で作成する必要があります。(b)一意のストーリーボードIDを指定します(私の例では、、InitialChild
および(c)最初の子コントローラーを手動でインスタンス化し、プログラムで子として追加します。したがって、カスタムコンテナービューコントローラーのシーンでUIView
呼び出されたと仮定すると、containerView
次のようなメソッドを持つことができます:
- (void)addInitialChild
{
UIViewController *child = [self.storyboard instantiateViewControllerWithIdentifier:@"InitialChild"];
[self addChildViewController:child];
child.view.frame = self.containerView.bounds;
[self.containerView addSubview:child.view];
[child didMoveToParentViewController:self];
}
次のシーンに移行したいときは、自分のシーンをサブクラス化してくださいUIStoryboardSegue
。
ReplaceSegue.hの場合:
@interface ReplaceSegue : UIStoryboardSegue
@end
ReplaceSegue.mで
@implementation ReplaceSegue
- (void)perform
{
UIViewController *source = self.sourceViewController;
UIViewController *destination = self.destinationViewController;
UIViewController *container = source.parentViewController;
[container addChildViewController:destination];
destination.view.frame = source.view.frame;
[source willMoveToParentViewController:nil];
[container transitionFromViewController:source
toViewController:destination
duration:0.5
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^{
}
completion:^(BOOL finished) {
[source removeFromParentViewController];
[destination didMoveToParentViewController:container];
}];
}
@end
次に、最初に含まれるシーンから次のシーンにセグエを実行するときに、「カスタム」セグエを指定し、この「ReplaceSegue」をクラスとして使用します(セグエをクリックして選択し、「属性インスペクター」を確認します)。 。
結果のストーリーボードは次のようになります({}
さまざまな子の間の「」の指定に注意してください)。
参照: