导航控制器之间的自定义转换
Posted
技术标签:
【中文标题】导航控制器之间的自定义转换【英文标题】:Custom Transition Between Navigation Controllers 【发布时间】:2011-03-12 23:23:13 【问题描述】:我想在两个导航控制器之间进行自定义转换。我们称第一个为sourceController
,另一个为detailNavController
。
这是我的代码:
NewEntryViewController *viewController = [[NewEntryViewController alloc]
initWithStyle:UITableViewStyleGrouped];
viewController.parentController = self;
UINavigationController *detailNavController = [[UINavigationController alloc]
initWithRootViewController:viewController];
[UIView beginAnimations:nil context:NULL];
[self.navigationController presentModalViewController:detailNavController animated:NO];
[UIView setAnimationDuration:0.4];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:sourceController.view cache:YES];
[UIView commitAnimations];
SourceController
首次以模态形式呈现,这就是我以模态形式呈现detailNavController
的原因。这段代码的问题是动画发生了,但是 sourceController 仍然在新的detailNavController
之上。我想要实现的是让动画然后关闭sourceController
并显示detailNavController
。
【问题讨论】:
【参考方案1】:我终于找到了解决方案,这是更新后的代码:
- (void)createNewEntryWithAnimation
// before calling this method I dismissed sourceController without animation
NewEntryViewController *viewController = [[NewEntryViewController alloc] initWithStyle:UITableViewStyleGrouped];
viewController.parentController = self;
UINavigationController *detailNavController = [[UINavigationController alloc]
initWithRootViewController:viewController];
[UIView beginAnimations:nil context:NULL];
[self.navigationController presentModalViewController:detailNavController animated:NO];
[UIView setAnimationDuration:0.4];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:viewController.view.window cache:NO];
[UIView commitAnimations];
我必须使用缓存:否,否则过渡不顺畅。
【讨论】:
以上是关于导航控制器之间的自定义转换的主要内容,如果未能解决你的问题,请参考以下文章