在Swift中使用segue之后从堆栈中删除(删除)view / viewController的正确方法

我在这里遇到了一个问题。 我正在用performSegueWithIdentifierexpression观点。 一切顺利。 问题是,作为一个testing,我只有2个viewControllers与他们的一些数据,我有两个button,调用一个segue回到另一个VC。 如果我继续执行Segue,可以清楚地看到内存使用量每两个节点上升约0.4Mb。 这告诉我视图不被删除/从视图堆栈中删除,只是使用内存。 我想知道通过使用performSegueWithIdentifier摆脱呈现其他视图的视图的正确方法(当然,在它完成呈现视图之后,否则它将不起作用)。

你能把我指向正确的方向吗? 我发现一些Objective-C代码试图做到这一点,但它是非常广泛的,我不太了解Objective-C,所以对我来说有点难以理解。

预先感谢您的帮助!

干杯!

编辑:


我正在做一个“手动延续”。 我的意思是我有两个视图控制器站在自己的angular度。 他们没有embedded任何导航VCs或类似的东西。 我正在使用“Show”types的“Adaptive Segue”。

如果你的目标是始终保持一个VC,并且由于你已经有一个手动的继续,你可以做的是,在提交下一个VC之后,你可以从根目录中popup现有的VC,并将目标VC分配为你的VC。

 class ManualSegue: UIStoryboardSegue { override func perform() { sourceViewController.presentViewController(destinationViewController, animated: true) { self.sourceViewController.navigationController?.popToRootViewControllerAnimated(false) UIApplication.sharedApplication().delegate?.window??.rootViewController = self.destinationViewController } } } 

当你进行正常的游戏时,你会在现有的游戏控制器上堆放新的视图控制器而不会解散它们。 这就是为什么你的内存使用量不断增加。

您需要提供更多信息,然后才能向您提供具体指导。 你在做模态赛段还是推进导航堆栈?

如果你在推,你想popup到你来自的视图控制器。 想想一堆盘子。 当你推动,你添加板到堆栈。 当你popup的时候,你把盘子拿出来,露出底下的盘子(视图控制器)。 在“PopTo”的Xcode帮助系统中进行search,find让您回到特定视图控制器或回到导航控制器的根视图控制器的方法。

模式视图控制器以类似的方式堆叠在彼此的顶部,但是没有导航控制器的起源。 如果您已经推送了一系列一个或多个模态,并将dismissViewControllerAnimated:completion:方法发送给视图控制器,则您将返回该视图控制器将closures位于其之上的模态。

你也可以看看使用unwind segues。 放松塞格让你回到你来的地方。 在Xcode帮助系统中search“使用展开segues”以获取更多信息。 大部分关于unwind的教程都是用Objective-C编写的,但是如果你看,你应该可以在Swift中find一些。 解释放松的细节是足够的细节是有用的是超过我可以覆盖在这个答案。