您的视图控制器正在尝试通过添加另一个视图控制器的视图作为当前视图的子视图来为过渡设置动画。这在很多方面都是有问题的。值得注意的是,您并没有对新的视图控制器本身做任何事情……如果这是一个 ARC 项目,它将在您身上发布。
如果您只想从一个视图控制器转换到另一个视图控制器,您通常应该执行标准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:
并且,预料到后续的逻辑问题,你如何为新视图控制器的解除设置动画,例如,你可能有一个“完成”按钮,它调用如下方法:
- (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];
}