2012-08-09 30 views
0

我使用UINavigation控制器,并有一个问题。是否有办法从第三视图切换到第一视图? 创建新对象FirstView *controller; [self.navigationcontroller pushViewController:controller animated:YES];的方法不适合我(将转移的数据从父项丢失到第一个视图)。UINavigationController导航

enter image descriptrtrt

回答

2

试试这个。它会工作。

您可以获取阵列中的所有视图控制器并弹出到特定视图控制器 。此代码将弹出到您的FirstView控制器。

NSArray *array = [self.navigationController viewControllers]; 

[self.navigationController popToViewController:[array objectAtIndex:1] animated:YES]; 
+0

它的工作原理!非常感谢! – RomanHouse 2012-08-09 08:23:57

+0

这不会让你跳到第一个viewController ...第一个viewController是位于索引0处的'rootViewController'。 – 2012-08-09 08:28:29

+0

@ Paul.s ParentView将位于索引0,FirstView位于索引1,SecondView位于索引2。 – iOSDev 2012-08-09 08:42:59

1

您可以使用:

[[self navigationController] popViewControllerAnimated:YES]; 

回去一个视图控制器;或:

[self.navigationController popToRootViewControllerAnimated:YES]; 

回到层次结构中第一个视图控制器。

+0

'[自我navigationController] popViewControllerAnimated:YES];'将返回我'二View'和'[self.navigationController popToRootViewControllerAnimated:YES];'将返回'父View' .. – RomanHouse 2012-08-09 08:05:12

2

假设你知道你的视图控制器返回并存储在returnToViewController

[self.navigationController popToViewController:retunToViewContoller animated:YES]; 
+0

再次同样,要做到这一点,我将需要创建'FirstView * returnToViewController',但在这种情况下,我失去了我的数据在***第一视图*** – RomanHouse 2012-08-09 08:14:44

+0

@RomanHouse,不,你不会。您的FirstView控制器已经在导航堆栈上。你不应该再创建它。导航控制器将它们保存在一个数组中,并且只能导航结构。 – 2012-08-09 08:24:51

+0

为什么要丢失任何数据?如果你这样做,那么你已经犯了任何其他与导航控制器的推送和弹出机制无关的错误。 – 2012-08-09 11:49:22

相关问题