Я строю в iOS 9 с Swift 2.0. У меня есть мой начальный UIViewController, который является моим экраном меню. Он содержит следующий код:Segue to 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, следующая инициализация работает до того, что prepareForSegue даже вызывается:
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
GKLocalPlayer.localPlayer().registerListener(self) // I only want this once
}
В раскадровке мой GameViewController есть кнопка «Меню», которое подключенный к выходному виджету для контроллера вида, и он разматывается в Меню по своему усмотрению. Но всякий раз, когда я снова выполняю segue, init снова вызывается, поэтому теперь у меня есть несколько GameViewControllers. Я думаю, что это замедляет мое приложение, поскольку я использую 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