2012-01-19 55 views
2

我已創建4個視圖的基於視圖的應用程序。通過使用導航控制器,我正在改變視圖。在我的第三個視圖中有一個按鈕。如果我點擊那個按鈕,應用程序應該來到第一個視圖(2回視圖)。如何在基於導航的應用程序中返回2個視圖

我用

[self.navigationController popViewControllerAnimated:YES]; 
[self.navigationController popViewControllerAnimated:YES]; 

這是行不通的。它只會到前一頁。

回答

4

嘗試了這一點,並根據您的規格

-(void)goToMainCategoryView; 
{ 
id object = nil; 

for (UIViewController *viewControl in self.navigationController.viewControllers) 
{ 
    if(viewControl.view.tag == 0) 
    { 
     object = viewControl; 
    } 
} 
[self.navigationController popToViewController:object animated:YES]; 
} 
+0

謝謝,它稍作修改..... – umakanta

+0

@umakanta:如果我的回答是幫助你然後接受或upvote我的anwer – Hiren

3

使用

popToRootViewControllerAnimated: 

去所有的方式回到頂部視圖控制器:

文檔:

彈出堆棧除了根視圖控制器上的所有視圖控制器,並更新顯示。

- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated 

popToViewController:animated: 

回去特定視圖控制器,提供你想要去的視圖控制器。

文檔:

入時視圖控制器,直到指定的視圖控制器是在導航堆棧的頂部。

- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated 

參數

的viewController 你想在堆棧的頂部視圖控制器。

+0

對不起,我已經更新了問題。請回答..... – umakanta

4

另一個簡單的根通過指數來選擇的UIViewController是使用做出改變:

NSArray *viewsArray = [self.navigationController viewControllers]; 
UIViewController *chosenView = [viewsArray objectAtIndex:1]; 
[self.navigationController popToViewController:chosenView animated:YES]; 

chosenView然後將在第二視圖導航堆棧(位置1)。如果你有一個大堆棧,並想要一個特定的視圖。

12
for (UIViewController *controller in self.navigationController.viewControllers) 
{ 
    if ([controller isKindOfClass:[NeededViewController class]]) 
    { 
     [self.navigationController popToViewController:controller 
               animated:YES]; 
     break; 
    } 
} 
+0

Perfact ans真的 –

+0

thnx @KetanPatel –

+0

多麼甜。完美的作品。 – nithinreddy

0

同樣的事情在迅速1.2 :: Xcode中:6.4

for controller: UIViewController in self.navigationController?.viewControllers as! [UIViewController] { 
     if controller.isKindOfClass(YourViewController) { 
      self.navigationController!.popToViewController(controller, animated: true) 
     } 
    } 
相關問題