2015-03-24 121 views
0

嗨我已經看到很多關於此主題的問題,但似乎沒有一個能解決我的情況。我想在用戶贏/死時在SKScene上展示一個UIView控制器。我創建了一個PresentWinLoseViewController:UIViewController子類並將其連接到故事板中。我創建了一個從GameViewController到故事板中的PresentWinLoseViewController的segue,再加上從PresentWinLoseViewController返回到GameViewController的兩個退出段。如何在spritekit場景上呈現uiviewcontroller

這是我如何打電話給這些。在我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'' 

我在做什麼錯?

回答

1

對於初學者來說,GameViewController應該已經被初始化,就沒有必要let gameVC = GameViewController()

這是因爲你的SKScene實際上是由您的GameViewController呈現。去看看你的GameViewController,你應該在viewDidLoad()中看到SKScene的初始化過程。

由於GameViewController已經初始化,所以您只需從SKScene直接調用GameViewController的performSegueWithIdentifier。

我只是做了一個快速搜索和這個答案似乎適用於您的情況:How to call method from ViewController in GameScene

+0

我不斷收到這樣的: ***終止應用程序由於未捕獲的異常「NSInvalidArgumentException」,理由是:「接收器()沒有標識符'testSegue'' ,並且我已經在storyboard中命名了segue。我刪除它,並readded /重命名它......仍然不斷收到此錯誤。 – Jeremy 2015-03-26 16:48:31

0

我會做到這一點通過將要素,你想你的場景到這兒來頂在同一個視圖控制器只在與你的場景相比更高的水平上。使用UIImage視圖是爲新元素創建背景的好方法。然後創建一個顯示元素的函數,一個隱藏它們的函數。對於所有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 
} 

通過調用這些函數它只是顯示或隱藏該頁面的元素。我目前正在製作頁面之間的轉換動畫。做這件事也給你增添透明度,讓您的應用程序好看的選項;)

+0

這將是一個很好的解決方案,但後來我遇到了無法在SKScene中呈現iAds的問題! – Jeremy 2015-03-25 02:48:04