如何从导航堆栈中删除 ViewController 并且没有返回到它的选项-Swift

Posted

技术标签:

【中文标题】如何从导航堆栈中删除 ViewController 并且没有返回到它的选项-Swift【英文标题】:How to remove a ViewController from navigation stack and not have the option to go back to it-Swift 【发布时间】:2017-11-16 16:27:29 【问题描述】:

我有一个登录页面,如果登录成功,用户将被带到登陆 viewController(VC)。我有一个导航控制器。我弹出登录 VC 并推入登陆 VC。我遇到的问题是登录 VC 保留在堆栈中,如导航控制器上的左按钮所示,该按钮将您导航回登录页面。如何从堆栈中完全删除登录 VC,以便导航控制器无法在用户登录后将其导航回它?

 self.navigationController?.popViewController(animated: true)

 let landingPage = self.storyboard?.instantiateViewController(withIdentifier: "landingPage") as! 
 LandingViewController

 self.navigationController?.pushViewController(landingPage, animated: true)

【问题讨论】:

UINavigationController.viewControllers 是导航堆栈,您可以删除一个并将数组再次设置为 NavigationController 你能详细介绍一下吗? 检查@Wez提供的答案是我在说什么 【参考方案1】:

您可以使用setViewControllers 方法来设置堆栈,如下所示:

self.navigationController?.setViewControllers([landingPage], animated: true)

你也不需要先弹出登录视图控制器。

【讨论】:

以上是关于如何从导航堆栈中删除 ViewController 并且没有返回到它的选项-Swift的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式从 ARC 中的导航堆栈中删除 viewController

如何清除导航堆栈以使后退按钮不出现?

如何从导航堆栈中删除页面 - c# windows 8

如何找出属于当前 viewController 的导航控制器?

在导航堆栈中重新创建 viewController

如何从导航控制器中删除视图