2011-07-05 89 views
8

在我的應用程序中,我正在執行UINavigationController。有幾個UIViewControllers被推入堆棧。「彈出」UINavigationController中的幾個視圖控制器堆棧

當我到達最後一個,我希望(用戶操作)所有的UIViewControllers彈出,除了第一個UIViewController。我怎麼做?

我明白如何彈出最後一個,但我如何指示所有以前的那些也不要忽略?

回答

22

您可以嘗試UINavigationController class的消息popToRootViewControllerAnimated:popToViewController:animated:popViewControllerAnimated:

+0

+1,'popToRootViewControllerAnimated:'是他正在尋找的東西。 – sergio

+0

這不會卸載堆棧上的viewcontrollers,雖然...我需要做什麼,如果我想這樣做? – SuperString

9

在你的情況下,它是真正有用的使用popToRootViewcontrollerAnimated:艾琳的建議,但如果有人需要彈出控制器的確切數字,然後下面的代碼可能是有用的:

- (void) popControllersNumber:(int)number 
{ 
    if (number <= 1) 
     [[self navigationController] popViewControllerAnimated:YES]; 
    else 
    { 
     NSArray* controller = [[self navigationController] viewControllers]; 
     int requiredIndex = [controller count] - number - 1; 
     if (requiredIndex < 0) requiredIndex = 0; 
     UIViewController* requireController = [[[self navigationController] viewControllers] objectAtIndex:requiredIndex]; 
     [[self navigationController] popToViewController:requireController animated:YES]; 
    } 
} 
3

使用

TravelViewController *travelView = [self.navigationController.viewControllers objectAtIndex:self.navigationController.viewControllers.count-3]; 
[self.navigationController popToViewController:travelView animated:YES]; 
+0

愛這個答案! –

相關問題