ビューコントローラは、現在のビューのサブビューとして別のビューコントローラのビューを追加することにより、トランジションをアニメーション化しようとしています。これは、多くの次元で問題があります。特に、新しいView Controller自体では何もしていません...これがARCプロジェクトの場合は、リリースされます。
あるViewControllerから別のViewControllerに移行するだけの場合は、通常、標準pushViewController:animated:
またはを実行する必要がありますpresentModalViewController:animated:
。前者をやっていたようです。なぜそれを現在のコードに置き換えたのですか?
何をしようとしていたのか、なぜ標準のトランジションを使用していないのかを教えていただければ、さらにサポートできる可能性があります。
アップデート:
デフォルトのアニメーションが気に入らないが、トランジションにカスタムアニメーションが必要な場合は、次のようにすることができます。
CustomAnimationViewController *yourNewViewController = [[CustomAnimationViewController alloc] initWithNibName:@"CustomAnimationView" bundle:nil];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationCurve: UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:0.75];
[self.navigationController pushViewController:yourNewViewController animated:NO];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO];
[UIView commitAnimations];
// if you're using ARC, you don't need this following release, but if you're not using ARC, remember to release it
// [yourNewViewController release];
アップデート2:
そして、論理的なフォローアップの質問を予想して、新しいView Controllerの却下をどのようにアニメーション化するか、たとえば、次のようなメソッドを呼び出す「完了」ボタンがある場合があります。
- (IBAction)doneButton:(id)sender
{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationCurve: UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:0.75];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.navigationController.view cache:NO];
[UIView commitAnimations];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDelay:0.375];
[self.navigationController popViewControllerAnimated:NO];
[UIView commitAnimations];
}