2016-11-29 3 views
1

SKScene에서 UIViewController으로 이동하고 싶습니다. 내 코드는 다음과 같습니다. 그러나 방법 showViewController()을 클릭하면보기가 이동하지 않습니다. 이 문제를 어떻게 해결할 수 있습니까?SKScene에서 UIViewController로 이동

나는 SWIFT3 그리고 난 메모리 문제가없이이 acheive하기 위해 수행 한 어떤

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

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

    } 

} 

답변

0

XCODE 8.1을 사용하고 있습니다.

먼저 루트 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) 
    } 
} 

필자는 주 코드에이 코드를 사용하여 필요할 때 팝업 알림을 표시합니다. 게임 내에서.

및 게임 장면

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

에서

는 당신이 얻을 바랍니다.

관련 문제