2014-11-06 39 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];