[英]how to present a uiviewcontroller over a spritekit scene
嗨,我已经看到许多有关此主题的问题,但似乎都无法解决我的问题。 当用户赢/死时,我想通过SKScene呈现UIView控制器。 我创建了一个PresentWinLoseViewController:UIViewController子类,并将其连接到故事板上。 我在情节提要中创建了从GameViewController到PresentWinLoseViewController的序列,以及从PresentWinLoseViewController回到GameViewController的两个退出序列。
这就是我所说的这些。 当我赢/输时在我的SKScene中
func win() {
let gameVC = GameViewController()
gameVC.performSegueWithIdentifier("tryAgain", sender: self)
}
和我从PresentWinLoseViewController退出时
@IBAction func tryAgainButtonPressed(segue:UIStoryboardSegue) {
self.performSegueWithIdentifier("unwindTryAgain", sender: self)
}
但是我什至无法做到如此,第一个segue永远行不通。 我不断
Receiver (<SpriteLevelBuilder.GameViewController: 0x7ff2b5e49210>) has no segue with identifier 'tryAgain''
我究竟做错了什么?
对于初学者,GameViewController应该已经初始化,无需let gameVC = GameViewController()
这是因为您的SKScene实际上是由GameViewController呈现的。 在您的GameViewController中查看,您应该在viewDidLoad()中看到SKScene的初始化过程。
由于GameViewController已经初始化,因此您只需从SKScene直接在GameViewController上调用performSegueWithIdentifier。
我只是做了一个快速搜索,这个答案似乎适用于您的情况: 如何从GameScene中的ViewController调用方法
我可以通过将要放在场景顶部的元素放在同一个视图控制器中的场景上方的某个位置来做到这一点。 使用UIImage View是为新元素制作背景的好方法。 然后,只需创建一个用于显示元素的函数,然后将其隐藏即可。 对于所有UI元素, .hidden = true
将是隐藏元素的方式, .hidden = false
将是显示元素的方式。 这是我的一个应用程序中一些代码的示例。
//this is the function that hides the settings menu
func hideSettingsMenu() {
settingsCoverImage.hidden = true
settingsTitle.hidden = true
watchButton.hidden = true
fitBitButton.hidden = true
backButton.hidden = true
classesButton.hidden = true
settingsTopBackground.hidden = true
}
//this is the function that shows the settings menu
func showSettingsMenu() {
settingsCoverImage.hidden = false
settingsTitle.hidden = false
watchButton.hidden = false
fitBitButton.hidden = false
backButton.hidden = false
classesButton.hidden = false
settingsTopBackground.hidden = false
}
通过调用这些函数,它仅显示或隐藏该页面的元素。 我目前正在为页面之间的过渡动画。 这样做也是为了让您可以选择增加透明度,使您的应用看起来不错;)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.