从SKScene导航到UIViewController

时间:2016-11-29 09:53:54

标签: ios swift swift3 xcode8.1

我想从SKScene导航到UIViewController。我的代码如下。但是,单击方法showViewController()时,视图无法导航。我该如何解决这个问题?

我正在使用SWIFT3XCODE 8.1

class GameScene: SKScene, SKPhysicsContactDelegate {
    func showViewController() {
        print("button clicked")

        self.view!.window!.rootViewController!.performSegue(withIdentifier: "DashboardVIewControllerSegue", sender: self)

    }

}

1 个答案:

答案 0 :(得分:0)

我在没有记忆问题的情况下做了什么来实现这一点。

首先在根viewController中创建一些协议(委托)。这个viewcontroller包含视图作为我们加载skscene的SKView。

所以每当你想从skscene打开一个新的viewcontroller时,只需要调用协议。

这是一些代码 在mainViewcontroller中:

protocol GameProtocol {
    func displayViewController()
}

extension MainViewController: GameProtocol {

    internal func displayViewController() {


        let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)

        let popoverVC = storyboard.instantiateViewController(withIdentifier: "SettingViewController") as! SettingViewController
//        popoverVC.modalPresentationStyle = .fullScreen
//        popoverVC.modalPresentationStyle = .popover
        popoverVC.popoverPresentationController?.permittedArrowDirections = UIPopoverArrowDirection(rawValue: 0)

        popoverVC.view.backgroundColor = UIColor.popBackgroundColor
        popoverVC.modalPresentationStyle = .popover
        popoverVC.popoverPresentationController!.delegate = self
        popoverVC.popoverPresentationController!.sourceView = self.view
        popoverVC.popoverPresentationController!.sourceRect = CGRect(x: 0.5, y: 0.5, width: 0, height: 0)

        popoverVC.preferredContentSize = CGSize(width: self.view.frame.width, height: self.view.frame.height)

        self.present(popoverVC,animated: false,completion: nil)
    }
}

我需要在maincontroller中使用此代码进行弹出警报。在gamescene中。

并在游戏场景中

  func showViewController() {
        let viewe = self.view as! GameSceneView
        viewe.myDelegate?. displayViewController()
    }

希望你明白这一点。