2011-03-12 44 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

回答

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]; 
} 

我不得不使用緩存:NO,否則轉型並不順利。

相關問題