2013-11-28 106 views
0

我设置这样一个导航控制器内:IOS:管理viewcontrollers导航控制器

UINavigationController *navController = (UINavigationController*) [self.storyboard instantiateViewControllerWithIdentifier:@"navigationcontroller"]; 
     NSArray *viewCS = [[NSArray alloc]initWithObjects:firstViewController, secondCureViewController, thirdUpViewController,fourthViewController, nil]; 
     [navController setViewControllers:viewCS]; 
[self presentViewController:navController animated:YES completion:nil]; 

这样,当我打开我的导航控制器,它出现在4吨视图 - 控制和确定,但有什么在我的导航控制器内导航的说明?

例如:我排在第四位,我想先进去,我想进入第二位,之后我想再进入四位。

当然,我不想失去我的viewcontrollers目前的状态,你能帮助我吗?

+0

你能张贴你有什么屏幕截图? – Pull

回答

0

使用下面的方法来导航之间移动controller.s

– pushViewController - add new view controller in hierarchy. 
– popViewControllerAnimated - From 4th to 3rd view controller. 
– popToRootViewControllerAnimated: - from 4th to 1st view controller. 

编辑:*的NSArray viewCS - >声明此作为代表应用程序的成员变量或属性。 然后你可以像下面那样访问委托中的数组,当你想推或者弹出一个视图。这样所有的控制器将保留在你的数组中,并且可以根据需要添加/删除。

AppDelegate *del = [[UIApplication sharedApplication] delegate]; 
+0

是的,但是当我使用弹出navcontroller.viewControllers nslog减少viewcontroller和有三个viewcontrollers,而不是四个 – CrazyDev

+0

我试过了,我有一个崩溃,说''试图弹出到不存在的视图控制器''“ – CrazyDev

+0

你可以使用作为应用程序委托的一部分放置的代码更新你的问题,然后当你试图弹出一个视图时?对象正在被释放。 – Jailbroken

0

您可以更改navController的viewControllers数组的顺序。

NSArray *VCArray = [navController viewControllers]; 
//manipulate VCArray and change the order of its items 
... 
//set it as new viewControllers array 
[navController setViewControllers:VCArray animated:YES]; 

这样,导航堆栈中的视图控制器保持它们的状态并且它们都不被释放。

0

我娄代码...

// Get controllers     
NSArray *viewControllers = [self.navigationController viewControllers]; 

int viewIndex = 2; 
[self.navigationController popToViewController:[viewControllers objectAtIndex:viewIndex] animated:NO]; 
+0

我注意到,当我使用流行的视图控制器开始三个而不是四个 – CrazyDev

+0

如果你想从第四个视图开始,然后将viewIndex设置为1, viewIndex = 1 – Sabareesh