如何删除 swift 中重复的 VC?

How to remove duplicate VC in swift?

我正在制作游戏,我从主屏幕转到 ArcadeViewController,它加载 SKScene,并将之前的 VC 保存为 prevVC。

我使用故事板中创建的转场在 VC 之间移动。

问题是,每次我移动到 VC,而不是移动到旧的,都会创建一个副本,并且它们都同时开始 运行。

当我进入 VC:

时,我尝试通过 运行 宁以下代码删除它们
        override func viewDidAppear(_ animated: Bool) {
    UIApplication.shared.keyWindow?.rootViewController = self
    self.view.window?.rootViewController?.dismiss(animated: true, completion: nil)
    prevVC.reloadViewFromnib()
    prevVC.dismiss(animated: false, completion: nil)
     UserDefaults.standard.set(0, forKey: "since_The_Last_Ad")

}
   extension UIViewController {
func  reloadViewFromnib() {
    let parent = view.superview
    view.removeFromSuperview()
    view = nil
    parent?.addSubview(view) // This line causes the view to be reloaded
}
}

它有助于减少创建的副本数量,但仍然有一些。

如何删除重复的视图?

所以解决方案最终是使用正常的 segue 首次从 GameVC(start VC) 启动 ArcadeVC。 然后设置 ArcadeVC 为 rootVC:

   UIApplication.shared.keyWindow?.rootViewController = self

然后使用正常的 segue 返回游戏VC。 在 ArcadeVC 设置为 rootVC 后,只需使用正常的 segue 到 ArcadeVC 从 GameVC,然后从 GameVC 展开到 Aracde VC.