如何删除 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.
我正在制作游戏,我从主屏幕转到 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.