попробовать:
self.view.window!.rootViewController?.dismiss(animated: false, completion: nil)
Это должно отклонить все представления выше rootViewController
редактирование:
Это может сработать для вас, поскольку мы определяем ViewController, убедитесь, что в вашей раскадровке MenuVC
есть идентификатор:
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "MenuVC") // Make sure is the same identifier as in the storyboard.
vc.view.frame = (self.view?.frame)!
vc.view.layoutIfNeeded()
UIView.transition(with: self.view!, duration: 0.3, options: .transitionFlipFromRight, animations:
{
self.view?.window?.rootViewController = vc
}, completion: { completed in
})
}
Edit:
Кажется, лучший способ сделать это - разместить свой класс SKScene в другом контроллере представления. Я предлагаю создать еще один ViewController, где будет находиться ваш SKScene, например SKViewController
. Вставьте свой MenuVC
внутри navigationController
, щелкнув по нему в storyBoard, щелкнув Редактор (в верхнем меню)> Вставить> Контроллер навигации. Отредактируйте ваш MenuVC так, чтобы вместо открытия сцены вы просто переключались на SKViewController и открывали сцену там. Для этого просто создайте переход из MenuVC
в раскадровке, например, с идентификатором "MenuToSKScene", а когда вы хотите открыть сцену, из вашего MenuVC просто выполните:
self.performsegue(with identifier: "MenuToSKScene", sender: self)
Затем сделайте все, что вы в настоящее время делаете в MenuVC
в SKViewController
, чтобы открыть сцену.
Это отправит вас в SKViewController, в котором есть ваш класс SKScene. Затем, когда вы хотите вернуться в меню, все, что вам нужно сделать, это:
self.dismiss(animated: true, completion: nil)
или создайте переход из SKViewController в MenuVC с идентификатором "SKSceneToMenu" и вызовите:
self.performsegue(with identifier: "SKSceneToMenu", sender: self)
По сути, не открывайте SKScene
из MenuVC
, но используйте отдельный viewController SKViewController
, который вы открываете, когда хотите открыть сцену, чтобы вы могли легко вернуться в меню.