1
두 개의 내비게이션 컨트롤러간에 맞춤형 전환을 원합니다. 첫 번째 전화는 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
을 표시하는 것입니다.
- (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];
}
내가 캐시를 사용했다 :