2015-10-07 18 views
0

你好我有代碼設置應該正確地從GameScene繼承到另一個視圖控制器mainMenuViewController。我已成立了實現這一目標的代碼是如何適當地延續到不同的ViewController

var viewController: GameViewController! 
func segue() { 
    viewController.dismissViewControllerAnimated(true, completion: nil) 
    SettingsViewController.delete(self) 
} 

在GameViewController

當SKLabelNode被點擊時調用。因爲mainMenu是當玩家開始遊戲時首先加載的場景,所以我收到了一些建議,因爲我們被告知忽略GameScene,而不是每次都創建一個新的segue。我得到錯誤'致命錯誤:意外地發現零,同時解開一個可選值',並在按鈕被點擊時崩潰。我假設它正在討論viewController。感謝您的幫助!

回答

1

如果您的問題理解正確,那麼您試圖關閉GameViewController。但方法dismissViewControllerAnimated只會解散您當前正在呈現的控制器。因此,當你的遊戲視圖控制器沒有提供任何東西時,它不能解除它。正如你所說的從代碼到GameViewController解除由他提供的控制器,它試圖按照你的意願去做,所以他得到了他提供的視圖控制器的屬性並試圖解僱它,但是該屬性是零,所以這樣的錯誤得到了。要解決這個問題,您應該撥打viewController.presentingViewController.dismissViewControllerAnimated(true, completion: nil)。 屬性presentsViewController返回呈現給你的控制器,在你的case控制器中呈現GameViewController。當你得到這個控制器時,你可以解除他提供的控制器(在你的情況下,控制器是你的GameViewController)。所以邏輯是得到說有「解除自己的權限」的「父」控制器(GameViewController)

+0

現在我得到了長錯誤***終止應用程序由於未捕獲的異常'NSInvalidArgumentException',原因:'+ [Noble_Ninja.SettingsViewController刪除:]:無法識別的選擇器發送到類0x10011c990' ***第一次扔調用堆棧: (0x186074f5c 0x19ab7bf80 0x18607bb64 0x186078c14 0x185f7cdcc 0x1000f90f4 0x1000f9c4c 0x1000f9d8c 0x18b433a2c 0x18b6016e0 0x18b5faac0 0x18b5cba10 0x18b5c9efc 0x18602c5a4 0x18602c038 0x186029d38 0x185f58dc0 0x1910ac088 0x18b632f44 0x1001115e8 0x19b3a68b8) 的libC++ abi.dylib:與類型NSException的未捕獲的異常終止」 – Kevin

1

我需要看你的代碼。它現在接縫,你嘗試調用方法刪除來查看控制器,但正如我所知,視圖控制器沒有這樣的。所以認爲這是程序中的其他錯誤,主要是將Noble_Ninja.SettingsViewController設置爲期望擁有此類方法的其他對象。這是我的預測,我不能說清楚什麼,因爲我只有異常描述。試着找到你在代碼中調用這個方法的位置,然後把剎車點放在那裏,當程序在剎車點停下來寫入你的控制檯(日誌) - (po NAME_OF_INSTANCE_THAT_CALLS_SUCH_METHOD)時,它會顯示真實的實例類型,所以你可以使用這個信息檢測真正的問題在哪裏。祝你好運

相關問題