我是iOS开发的新手,正在构建一个包含UINavigationController和三个ViewController的应用程序,我将它们分别称为A,B和C。
最初显示了视图控制器A。从那里开始,我有两个工作流程:
在第二个工作流中,我在视图控制器B上定义了shouldPerformSegue(withIdentifier)。在此方法内部,我需要做一些工作来决定是否应该显示视图控制器C或取消segue并显示错误消息。假定没有错误发生,将执行到视图控制器C的设置。当显示视图控制器C时,后退按钮指向视图控制器B,但是我需要它指向视图控制器A。
我试图通过在shouldPerformSegue(withIdentifier)末尾调用以下命令,从导航堆栈中删除视图控制器B,然后返回true以允许segue继续进行:
self.navigationController?.viewControllers.remove(at: index)
如果我正确阅读了文档,则要删除的视图控制器的索引对应于以下内容:
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/