Как: предоставить SKScene доступ к методу dismiss () UIKit - PullRequest
0 голосов
/ 22 марта 2019

Возможно ли получить доступ к dismiss () в классе SKScene? Увольнение - это метод, доступный в компании UIK для яблок. Вот ссылка на официальную документацию Apple по dismiss .

class GameScene: SKScene {

}

Попытка уволить уволить из примера IBAction:

    @IBAction func dismissTapped(_ sender: Any) {
     //figure out how to dismiss
    }

Увольнение обычно используется так -

dismiss(animated: true, completion: nil)

1 Ответ

0 голосов
/ 22 марта 2019

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...