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

Ios 关闭多个推送视图控制器,ios,swift,Ios,Swift,我正在开发一个应用程序,用户可以在应用程序上购买一些食物,然后在家里送货。 在某个时候,用户的购物车上有一些产品(显示在选项卡视图控制器中),他去确认他的地址和付款方式(这是在两个不同的推式视图控制器中进行的)。当购买完成后,应用程序会显示一些消息,告知付款是否成功(在他确认付款后,还会在推送视图控制器中显示)。 因此,在用户完成购买后,我希望从购买过程中取消所有视图控制器,并通过点击按钮返回到选项卡视图控制器 如何关闭所有推送的视图控制器 以下是故事板的图像: 您可以使用导航控制器的内置功能弹

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

如何关闭所有推送的视图控制器

以下是故事板的图像:


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

self.navigationController?.popToRootViewControllerAnimated(true)

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

是的,您可以通过以下操作完成此操作

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

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

现在您在VCd上,您想退出VCa,或者干脆跳到VCa,然后只需执行此操作
[self.navigationController popToRootViewController]

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

self.navigationController?.popToRootViewControllerAnimated(true)
现在,如果您想退出或跳转到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];
      }
  }

这应该可以做到。希望这能有所帮助。

您的回答帮助我在导航层次结构中找到了一个特定的视图控制器,并在找到该视图控制器之前关闭了所有其他视图控制器。谢谢