2011-03-12 6 views
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]; 
} 

내가 캐시를 사용했다 :

답변

1

내가 마지막으로 이것에 대한 해결책을 발견했습니다, 여기에 업데이트 된 코드의 NO, 그렇지 않으면 전환이 원활하지 않았다.

관련 문제