2014-11-06 44 views
0

我正在開發一個應用程序,作爲第一個viewcontroller有一個UIViewController。 該控制器推動包含其他控制器的NavigationViewController。 現在我需要彈出NavigationController的RootViewController以回到最初的UIViewController。 我試圖與流行RootViewController

[self dismissViewControllerAnimated:YES completion:nil]; 

和應用程序崩潰( 「Tread1:EXC_BAD_ACCESS(碼= 1,地址= ......)」)。 我試過

[self.navigationController popViewControllerAnimated:YES]; 

沒有任何反應。

最初的UIViewController調用

[self performSegueWithIdentifier:@"MyIdentifier" sender:self]; 

在UIBuilder的SEGUE的類型是 「顯示(例如推送)」

然後,我有一個包含RootViewController的和其他的ViewController一個NavigationViewcontroller。 我想要實現的是從RootViewController返回到第一個viewcontroller(navigationcontroller之外的那個)。所以我應該有導航控制器那裏。

我錯過了什麼?

+1

原因沒有任何反應是,'self',誰就是沒有'navigationController'。您正在與錯誤的視圖控制器通話。這裏的問題在於,你需要將整個視圖控制器的「堆棧」放到正確的位置;您將需要多個命令,可能...不幸的是,您的問題沒有描述您的實際全套視圖控制器,因此無法進一步提供幫助。 – matt 2014-11-06 14:50:42

+1

我認爲你需要看看你的視圖控制器層次結構。 UIViewController如何在沒有導航控制器的情況下「推」UINavigationController?將UINavigationController作爲模態控制器顯示會更好。 – Erik 2014-11-06 14:51:02

+0

你可以試試,[self.navigationController popToRootViewControllerAnimated:YES]; – JScarry 2014-11-06 14:52:38

回答

0

顯然我有幾個GestureRecognizer仍然在導致應用程序崩潰的地方。 正確的方法是:

[self dismissViewControllerAnimated:YES completion:nil];