2011-09-21 98 views
0

我在滾動視圖中有三個視圖。我已經通過下面的代碼添加了它們;Modal View Controller崩潰

[self.scrollView addSubview:[aViewController view]]; 

當我滾動我想有自己的導航控制器呈現一個模式視圖控制器的觀點,但是這會導致系統崩潰。下面是我使用的顯示模式視圖

MyVC *vc = [[MyVC alloc] initWithNibName:@"VC" bundle:nil]; 
self.navController.modalTransitionStyle=UIModalTransitionStyleCrossDissolve; 
self.navController.viewControllers = [NSArray arrayWithObject:vc]; 
[vc release]; 
[self presentModalViewController:self.navController animated:YES]; 

和碰撞吸我得到的代碼:萌發過程中的應用程序由於未捕獲的異常「NSInternalInconsistencyException」,理由是:「試圖從開始一個模式過渡而轉型已經在進行中。等待viewDidAppear/viewDidDisappear知道當前轉換已完成'

任何幫助將不勝感激。

+0

直接添加視圖控制器的視圖作爲一個子視圖是不是一個好的做法。視圖控制器意味着通過適當的容器視圖控制器來呈現,推送等,以使它們本身可以管理他們的視圖。直接拉出視圖通常會導致內存泄漏。 – LucasTizma

回答

0

您無法顯示當前導航控制器。現在不是您MyVC視圖 - 控制

MyVC *vc = [[MyVC alloc] initWithNibName:@"VC" bundle:nil]; 
vc.modalPresentationStyle = UIModalPresentationFormSheet; 
vc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; [self 
presentModalViewController:vc animated:YES]; 
[vc release]; 

你也可以創建視圖控制器的一個新的層次,他們推到一個新的導航控制器,並出示。

+0

你可以,這是在模態視圖上獲得導航控制器的方式,我之前已經完成。但在這種情況下,我只是不明白這個錯誤。 –

0

您不應該試圖從本身內部呈現視圖控制器的導航控制器。相反,你的模式視圖控制器創建一個新的導航控制器:

MyVC *vc = [[MyVC alloc] initWithNibName:@"VC" bundle:nil]; 
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:vc]; 
navigationController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 

[self presentModalViewController:navigationController animated:YES]; 
[vc release]; 
相關問題