关闭多个推送的视图控制器

时间:2016-06-23 16:01:16

标签: ios swift

我正在开发一款应用,用户可以在应用上购买一些食物并在家中送达。 在某些时候,用户在他的购物车上有一些产品(显示在标签视图控制器中),并且他去确认他的地址和付款方式(这些是在两个不同的推送视图控制器中进行的)。购买完成后,应用程序会显示一些消息,通知付款是否成功(在确认后也显示在推送的视图控制器中)。 因此,在用户完成购买后,我想从购买过程中解除所有这些视图控制器,并通过点击按钮返回到选项卡视图控制器。

如何解除所有推送的视图控制器?

以下是故事板的图片:

enter image description here

2 个答案:

答案 0 :(得分:7)

您可以使用导航控制器的内置功能弹回根视图控制器。

self.navigationController?.popToRootViewControllerAnimated(true)

这将删除导航堆栈上的所有推送视图控制器并返回堆栈上的基本控制器。当按下按钮时,您可以将此功能附加到动作选择器。

答案 1 :(得分:1)

是的,你可以通过以下方式做到这一点。

假设你有一个像这样的结构---

导航控制器 - (根) - > VCa - > VCb - > VCc - > VCd

现在你在VCd,你想解雇或者更喜欢弹出VCa,然后只需这样做[self.navigationController popToRootViewController]

这将弹出或关闭所有VC并返回VCa,因为VCa是导航控制器的根视图控制器。

现在,如果您要关闭或弹出到VCb,请执行以下操作

 for(UIViewController *vc in self.navigationController.viewControllers){
      if([vc isKindOfClass:[VCb class]]){
            // this means you have successfully picked VCb among all the vc
            // inside of the viewControllers in the Navigation stack.
          [self.navigationController popToViewController:vc animated:YES];
      }
  }

这应该这样做。希望这会有所帮助。