我正在用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