Ios 执行segue后如何删除UIViewController?

Ios 执行segue后如何删除UIViewController?,ios,swift,memory-leaks,uiviewcontroller,segue,Ios,Swift,Memory Leaks,Uiviewcontroller,Segue,作为练习,我不想使用导航控制器 我有以下项目: VIEW控制器中心的每个按钮都会触发2个按钮序列。它们使用以下自定义类: class CustomSegue:UIStoryboardSegue{ 重写函数执行(){ 弱var firstView=self.source.view作为UIView? 弱var secondView=self.destination.view作为UIView? 让screenSize=UIScreen.main.bounds.size secondView?.fra

作为练习,我不想使用导航控制器

我有以下项目:

VIEW控制器中心的每个按钮都会触发2个按钮序列。它们使用以下自定义类:

class CustomSegue:UIStoryboardSegue{
重写函数执行(){
弱var firstView=self.source.view作为UIView?
弱var secondView=self.destination.view作为UIView?
让screenSize=UIScreen.main.bounds.size
secondView?.frame=CGRect(x:screenSize.width,y:0.0,width:screenSize.width,height:screenSize.height)
UIApplication.shared.keyWindow?.insertSubview(第二视图!,上面的子视图:第一视图!)
动画(持续时间:0.3,动画:{()->Void in
firstView!.frame=firstView!.frame.offsetBy(dx:-1*screenSize.width,dy:0.0)
secondView!.frame=secondView!.frame.offsetBy(dx:-1*screenSize.width,dy:0.0)
}){(\)>中的Void
self.source.present(self.destination,动画:false,完成:nil)
}
}
}
这是非常错误的,因为它会在执行的每个阶段创建一个新的ViewController对象。随着
UIApplication.shared.keyWindow.subview
被UIView填满,内存使用量一直在上升,而不是下降

我正在处理的项目有几个ViewController,它们可以随机调用任何其他控件。由于这个原因,我没有成功地使用
UIViewController.disclose(动画:completion:)
,因为它系统地使它返回到以前的ViewController


执行完一段操作后,我如何才能明确地删除以前的ViewController?

根据评论,您不需要传统的“导航控制器”功能,主要是不需要“后退”按钮

因此,一种选择是使用子视图控制器


您的“主”视图控制器将只有一个“容器”视图。启动时,将第一个VC作为子VC加载,并将其视图添加为容器的子视图。当您想“导航”到任何其他VC时,将该VC作为子VC加载,用新的子VC视图替换容器中的当前视图,然后卸载当前子VC。

@shim是的,它适用于2个视图控制器,但正如我所说,我的项目有几个视图控制器,它们可以按任何顺序调用任何其他视图控制器,为什么不使用导航控制器?与其在前一个视图控制器的基础上显示后续视图控制器,不如先将它们关闭,然后在某个基础视图控制器上显示新的视图控制器?听起来像是在尝试重新发明轮子;这就是UINavigationController的用途。我尝试了下面的解决方案,效果非常好!这是超级干净和快速。