Swift-SKScene可以访问dismiss()UIKit方法

时间:2019-03-22 15:00:33

标签: ios swift uikit

是否可以在SKScene类中访问dismiss()?关闭是Apples UIKit提供的一种方法,这里是dismiss上Apple官方文档的链接。

class GameScene: SKScene {

}

尝试从IBAction示例中解雇:

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

Dismiss通常会这样使用-

dismiss(animated: true, completion: nil)

1 个答案:

答案 0 :(得分:0)

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)