dismiss
- это метод в UIviewController, а не в SKScene. Тем не менее, ваша сцена имеет свойство view
, которое является ее содержащим представлением (которое является SKView
, которое является UIView
, которое является UIResponder
). Вы можете использовать метод представления next
, унаследованный от UIResponder
, чтобы пройти по цепочке респондента, пока вы не нажмете первый контроллер представления (потому что UIViewController
также является UIResponder
):
extension UIResponder {
func firstParent<T: UIResponder>(ofType type: T.Type ) -> T? {
return next as? T ?? next.flatMap { $0.firstParent(ofType: type) }
}
}
//Use in your SKScene like so
view?.firstParent(ofType: UIViewController.self)?.dismiss(animated: true, completion: nil)