[英]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.