我正在用Swift 2.0編譯iOS 9。我有我的起始UIViewController,這是我的菜單屏幕。它包含以下代碼:在沒有初始化一個新對象的情況下繼續使用UIViewController
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if let id = segue.identifier where id == "GamePlayScene" {
self.gameVC = segue.destinationViewController as? GameViewController
self.gameVC!.delegate = self
if let s = sender as? GKTurnBasedMatch {
self.gameVC!.match = s
}
}
}
當segueing我GameViewController,下面的init將運行prepareForSegue甚至之前調用:
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
GKLocalPlayer.localPlayer().registerListener(self) // I only want this once
}
在故事板,我GameViewController有一個「菜單」按鈕,即連接到視圖控制器的出口小部件,並按照預期展開到菜單。但是每當我再次執行segue時,init會再次被調用,所以我現在有多個GameViewController。我認爲這是因爲我使用SKScenes會降低我的應用。 如何在不每次創建新對象的情況下執行一個segue?
func player(player: GKPlayer, receivedTurnEventForMatch match: GKTurnBasedMatch, didBecomeActive: Bool) {
if didBecomeActive {
// This event is what activated the app, so the user wants it right meow
GameKitHelper.sharedInstance.match = match
performSegueWithIdentifier("GamePlayScene", sender: match)
}
}
非常有幫助的功能,謝謝。 – dem7w2