幽灵视图控制器
Posted
技术标签:
【中文标题】幽灵视图控制器【英文标题】:Ghost viewcontrollers 【发布时间】:2018-04-27 10:37:16 【问题描述】:在我的 ios 应用中,当从 viewcontroller 2 转换到 1 时,使用:
let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let newViewController = storyBoard.instantiateViewController(withIdentifier: "Start") as! Start
view?.window?.rootViewController?.dismiss(animated: true, completion:nil)
view?.window?.rootViewController?.present(newViewController, animated: false, completion: nil)
过渡效果很好,但是之后当我单击视图控制器 1 中的一个按钮时,它会引导我进入视图控制器 3(这是一个 SKScene)它也可以,但是当我使用上面的代码从 3 返回到视图控制器 1 时,它显示(旧版本)viewcontroller 2,然后我必须单击返回按钮才能转到 viewcontroller 1。
我尝试在每次转换离开时将 viewcontroller 2 关闭。
所有视图控制器都在同一个导航控制器中,但没有顶栏
如何在不出现重影的情况下返回到以前的视图控制器?
【问题讨论】:
不确定我是否正确理解了这个问题,但您可以在您的 navigationController 上使用setViewControllers(_:animated:)
一次性将它管理的所有控制器替换为另一个层次结构...
你是什么意思@Alladinian
另外,exit segue(或 popToRoot,如果您只想转到第一个控制器)将帮助您从 3 放松到 1 省略控制器 2...
如何声明/使用 popToRoot?
你没有声明它。 It's a method of UINavigationController
【参考方案1】:
尝试从导航数组中删除您的视图控制器。
var arrViews = self.navigationController?.viewControllers
for viewController in arrViews!
if viewController is YourViewControllerToRemove
if let index = arrViews?.index(of: viewController)
arrViews?.remove(at: index)
self.navigationController?.viewControllers = arrViews!
【讨论】:
以上是关于幽灵视图控制器的主要内容,如果未能解决你的问题,请参考以下文章
蓝桥杯省赛真题26Scratch吃豆人 少儿编程scratch蓝桥杯省赛真题讲解