4

pushViewController:viewController animation:YESメソッドに似たメソッドをナビゲーション コントローラーに作成する必要がありますが、左から右への遷移を行いながら、ビュー コントローラーのフレームの上部に 80px を追加する必要があります。ただし、以下のメソッドは次のエラーをスローしています。

親ビュー コントローラーは、-[UIViewController transitionFromViewController:toViewController:duration:options:animations:completion:]' の呼び出しでレガシー コンテインメントを使用しています。

- (void)transitionFrom:(UIViewController *)oldController To:(UIViewController *)newController
{
    [self addChildViewController:newController];
    //[self configureChild:newController];
    [newController.view setFrame:CGRectMake(320, 80, oldController.view.frame.size.width, oldController.view.frame.size.height)];
    [self transitionFromViewController:oldController
                      toViewController:newController
                              duration:0.5
                               options:UIViewAnimationOptionTransitionFlipFromLeft
                            animations:^{
                                [oldController.view setFrame:CGRectMake(-320, 80, oldController.view.frame.size.width, oldController.view.frame.size.height)];
                                [newController.view setFrame:CGRectMake(0, 80, newController.view.frame.size.width, newController.view.frame.size.height)];
                            }
                            completion:^(BOOL finished){
                                //[oldController willMoveToParentViewController:nil];
                                [oldController removeFromParentViewController];
                                [newController didMoveToParentViewController:self];
                            }];
}
4

3 に答える 3