我有一個UITabBarController
有兩個項目,第一個是一個日曆,這只是一個UIWebView
。第二個項目引入SpriteKit遊戲場景並隱藏標籤欄(遊戲需要全屏顯示)。使用SKSpriteNode作爲按鈕從GameScene轉換到UITabBarController
我有一個SKSpriteNode
圖片,當點擊時,我希望視圖變回日曆視圖(第一個標籤欄項目)。我搜索了一種方法來做到這一點,並嘗試了我在StackOverflow上找到的各種建議,但沒有任何工作。與錯誤
"Unexpectedly found nil while unwrapping an optional"
應用崩潰我明白是什麼錯誤意味着,只要不是爲什麼我得到它。下面是相關的代碼(其中一部分我從這裏試圖弄清楚這一點了):
在GameScene.swift:
weak var viewController: GameViewController!
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
let touch:UITouch = touches.first! as UITouch
let positionInScene = touch.locationInNode(self)
let touchedNode = self.nodeAtPoint(positionInScene)
if let name = touchedNode.name {
if name == "exit" {
self.viewController.gameOver()
self.removeFromParent()
self.view?.presentScene(nil)
}
}
}
在GameViewController.swift:
var currentGame: GameScene!
override func viewDidLoad() {
super.viewDidLoad()
self.tabBarController?.tabBar.hidden = true
if let scene = GameScene(fileNamed:"GameScene") {
// Configure the view.
let skView = self.view as! SKView
skView.showsFPS = false
skView.showsNodeCount = false
skView.ignoresSiblingOrder = true
scene.scaleMode = .AspectFill
scene.viewController = self
skView.presentScene(scene)
currentGame = scene
}
}
func gameOver() {
performSegueWithIdentifier("backToMain", sender: nil)
}
這是給出錯誤的行:
self.viewController.gameOver()
與此崩潰無關,但請注意'self.removeFromParent()'沒有任何作用。 SKScene是一個根節點,因此它可以從節點樹中刪除。當調用view.presentScene()時,舊場景被替換爲一個新場景('view.scene'被覆蓋),並轉換到新場景完成。 – Whirlwind
謝謝,我從這個網站上的其他類似問題中得到了答案。認爲它可能有用,所以我把它扔在那裏。很高興知道它不會幫助我的情況。 –