ストーリーボードを使用して、多くのトランジションを含む大きなアプリケーションがあります。トランジションは右から左に行う必要があるので、カスタムセグエを作成して実行しました。
通常のトランジションを使用すると、ナビゲーションスタックにプッシュした各View Controllerは、ポップするまで保持されます。
カスタムセグエを使用している間、前のコントローラー(現在のコントローラーをプッシュするコントローラー)は保持されません。ポップバックすると、コントローラーのインスタンスは別のメモリアドレスを取得します。これは、ポインターが変更されたことを示します。
これはカスタムプッシュセグエです:
UIViewController *sourceViewController = (UIViewController*)[self sourceViewController];
UIViewController *destinationController = (UIViewController*)[self destinationViewController];
CATransition* transition = [CATransition animation];
transition.duration = .3f;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromLeft;
[sourceViewController.navigationController.view.layer addAnimation:transition
forKey:kCATransition];
[sourceViewController.navigationController pushViewController:destinationController animated:NO];
とカスタムポップセグエ:
UIViewController *sourceViewController = (UIViewController*)[self sourceViewController];
UIViewController *destinationController = (UIViewController*)[self destinationViewController];
CATransition* transition = [CATransition animation];
transition.duration = .3f;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromRight;
[sourceViewController.navigationController.view.layer addAnimation:transition
forKey:kCATransition];
[sourceViewController.navigationController pushViewController:destinationController animated:NO];
私はこの方法でセグエを実行します:
[self performSegueWithIdentifier:@"SearchToMenu" sender:self];
何も機能していないようで、オンラインで何も見つかりませんでした。
さらにコード例やスクリーンショットなどを提供する必要がある場合は、お知らせください。