gpt4 book ai didi

ios - 在 segue 期间从 UINavigationController 的导航堆栈中删除 View Controller ?

转载 作者:搜寻专家 更新时间:2023-11-01 05:52:47 26 4
gpt4 key购买 nike

我是 iOS 开发的新手,我正在构建一个由 UINavigationController 和三个 ViewController 组成的应用程序,我将它们称为 A、B 和 C。

最初显示的是 View Controller A。从那里开始,我有两个工作流程:

  1. A > C

  2. A > B > C

在第二个工作流程中,我在 View Controller B 上定义了 shouldPerformSegue(withIdentifier) 。在这个方法内部,我需要做一些工作来决定是否应该显示 View Controller C 或取消转场并显示错误消息。假设没有发生错误,将执行到 View Controller C 的转场。当显示 View Controller C 时,后退按钮指向 View Controller B,但我需要它指向 View Controller A。

我已经尝试通过在 shouldPerformSegue(withIdentifier) 的末尾调用以下命令来从导航堆栈中删除 View Controller B,就在返回 true 以允许 segue 继续之前:

self.navigationController?.viewControllers.remove(at: index)

如果我正确阅读文档,要删除的 View Controller 的索引对应于以下内容:

The root view controller is at index 0
The back view controller is at index n-2
The top view controller is at index n-1

不幸的是,我没有任何运气让它正常工作。我确定我做错了什么,但我不确定还能尝试什么。谁能指出我正确的方向?谢谢!

最佳答案

你可以使用这个:

var viewControllers = navigationController?.viewControllers

viewControllers?.removeLast(2) //here 2 views to pop index numbers of views

navigationController?.setViewControllers(viewControllers!, animated: true)

你也可以这样删除..

关于ios - 在 segue 期间从 UINavigationController 的导航堆栈中删除 View Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40975451/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com