2016-11-29 96 views
1

我想從SKScene導航到UIViewController。我的代碼如下。但是,單擊方法showViewController()時,視圖不會被導航。我該如何解決這個問題?從SKScene導航到UIViewController

我使用SWIFT3XCODE 8.1

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

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

    } 

} 

回答

0

我做了什麼,以達致這無需記憶問題。

首先在根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() 
    } 

也喜歡你。

相關問題