を使用しています。
まず、ルートviewControllerにプロトコル(デリゲート)を作成します。このviewcontroller sksceneをロードするSKViewとしてのビューが含まれています。
だから、sksceneから新しいviewcontrollerを開くときはいつでも、プロトコルを呼び出すだけです。
protocol GameProtocol {
func displayViewController()
}
:ここ
は、いくつかのコードmainViewcontrollerで です。
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()
}
は、あなたがこれを取得願っています。