导航呈现给另一个导航,如何回到根导航

时间:2018-12-25 02:07:02

标签: ios objective-c uinavigationcontroller

我的根导航有一个StoreDetailsController,我在ShoppingBagNavigationController中的StoreDetailsController中。它们可以无限存在。要返回到根导航时该怎么办?

- (void)goBagVC{
  UINavigationController *shoppingBag = [[UIStoryboard storyboardWithName:@"ShoppingBag" bundle:nil] instantiateViewControllerWithIdentifier:@"ShoppingBagNavigationController"];
ShoppingBagViewController *myshopVC = shoppingBag.viewControllers[0];
[myshopVC passDetailProduct:self.productDetailModel.productID];
[self presentViewController:shoppingBag animated:YES completion:nil];}    

- (void)goRootVC{
[self.navigationController.tabBarController setSelectedIndex:0];
[self.navigationController popToRootViewControllerAnimated:YES];}

我想在goRootVC函数中成为root Controller。谢谢

3 个答案:

答案 0 :(得分:0)

由于ShoppingBagViewController将是您展示后的最高视图,因此在按钮dismiss(animated: true, completion: nil)中按下按钮添加呼叫ShoppingBagViewController将会关闭该屏幕。

关闭其他屏幕后,StoreDetailsController应该可见。

答案 1 :(得分:0)

在我看来,您似乎在混淆模态演示并将其推入导航堆栈。您的goBagVC方法会在当前视图控制器的顶部以模块化方式呈现一个导航控制器。如果要将视图控制器推入导航堆栈,则需要从导航控制器开始并调用seg:off

答案 2 :(得分:0)

您必须在导航控制器中搜索该视图控制器,然后弹出该控制器。

快速

let vc = self.navigationController!.viewControllers.filter { $0 is StoreDetailsController }.first!
self.navigationController!.popToViewController(vc, animated: true)