【问题标题】:Navigation present to another navigation, how to get back to the root navigation导航呈现给另一个导航,如何回到根导航
【发布时间】:2019-05-23 22:28:53
【问题描述】:

我的根导航有一个StoreDetailsController,我在StoreDetailsController中呈现给ShoppingBagNavigationController。它们可以无限呈现。想回到根导航怎么办?

- (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 函数中进入根控制器。谢谢

【问题讨论】:

    标签: ios objective-c uinavigationcontroller


    【解决方案1】:

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

    斯威夫特

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

    【讨论】:

      【解决方案2】:

      在我看来,您正在混淆模态表示并推入导航堆栈。您的 goBagVC 方法以模态方式在当前视图控制器之上呈现导航控制器。如果要将视图控制器推送到导航堆栈上,则需要从导航控制器开始并调用 pushViewController:animated:

      【讨论】:

        【解决方案3】:

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

        一旦关闭另一个屏幕,StoreDetailsController 应该可见。

        【讨论】:

          猜你喜欢
          • 2020-05-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-10-02
          • 1970-01-01
          • 1970-01-01
          • 2019-10-08
          • 2021-05-17
          相关资源
          最近更新 更多