Как удалить дубликаты VC в Swift? - PullRequest
0 голосов
/ 09 мая 2019

Я делаю игру, в которой я перехожу с основного экрана на ArcadeViewController, который загружает SKScene и сохраняет предыдущий VC как prevVC.

Я использую сегменты, созданные в раскадровке, для перемещения между 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
}
}

Это помогло уменьшить количество созданных копий, но все же некоторые.

Как мне удалить дубликаты просмотров?

1 Ответ

0 голосов
/ 12 мая 2019

Таким образом, решение в конечном итоге заключалось в том, чтобы использовать обычный переход для запуска ArcadeVC из GameVC (start VC) в первый раз. Затем установите ArcadeVC как rootVC:

   UIApplication.shared.keyWindow?.rootViewController = self

Затем используйте обычный переход, чтобы вернуться в GameVC. После того, как ArcadeVC установлен в качестве rootVC, просто используйте обычный переход к ArcadeVC из формы GameVC и откатитесь от GameVC до AracdeVC.

...