2013-11-28 134 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