【问题标题】:How to remove duplicate VC in swift?如何快速删除重复的 VC?
【发布时间】:2019-09-26 16:30:25
【问题描述】:

我正在制作一个游戏,我从主屏幕转到 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
}
}

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

如何删除重复的视图?

【问题讨论】:

标签: swift storyboard viewcontroller skscene


【解决方案1】:

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

   UIApplication.shared.keyWindow?.rootViewController = self

然后使用正常的 segue 回到 GameVC。 将 ArcadeVC 设置为 rootVC 后,只需使用普通 segue 到 ArcadeVC 窗体 GameVC,然后从 GameVC 展开到 AracdeVC。

【讨论】:

    猜你喜欢
    • 2015-12-29
    • 1970-01-01
    • 1970-01-01
    • 2017-12-25
    • 2014-09-24
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    相关资源
    最近更新 更多