簡體   English   中英

如何在基於導航的應用程序中返回2個視圖

[英]How to go 2 views back in navigation based application

我創建了一個基於視圖的4個視圖的應用程序。 通過使用導航控制器我正在改變視圖。 在我的第3個視圖中,有一個按鈕。 如果我點擊該按鈕,應用程序應該進入第一個視圖(2個視圖)。

我用過

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

這不起作用。 它只會轉到上一頁。

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

另一個通過索引選擇UIViewController的簡單根將是使用:

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

然后, chosenView將成為導航堆棧中的第二個視圖(位置1)。 如果你有一個很大的堆棧,想要去一個特定的視圖。

試試這個,並根據您的規范進行更改

-(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];
}

采用

popToRootViewControllerAnimated:

一路回到頂視圖控制器:

文檔:

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

- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated

要么

popToViewController:animated:

要返回到特定的視圖控制器,請提供要轉到的視圖控制器。

文檔:

彈出視圖控制器,直到指定的視圖控制器位於導航堆棧的頂部。

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

參數

viewController您希望位於堆棧頂部的視圖控制器。

swift 1.2 :: xcode中的相同內容:6.4

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM