2016-07-30 1 views
1

Je crée un jeu simple avec un bouton pause. Je veux montrer un autre contrôleur de vue avec l'écran de pause sans réinitialiser le contrôleur de vue de jeu quand je reviens. Chaque chose que j'ai essayé, a abouti à la réinitialisation du contrôleur de vue de jeu, quand j'appuie sur le bouton de reprise et retourne au jeu. Est-ce que quelqu'un sait comment je peux le faire sans réinitialiser le jeu? C'est un kit de sprite et une application iOS rapide dans xcode.Xcode avec swift: Est-il possible d'afficher un contrôleur de vue sur un autre sans réinitialiser le premier?

+0

Vous devez étudier les données persistantes de docs de pommes officielles sur rapide. Cela devrait vous aider. – Dershowitz123

+0

Pour en savoir plus, vous pouvez consulter la [documentation relative aux données persistantes] (https://developer.apple.com/library/ios/referencelibrary/GettingStarted/DevelopiOSAppsSwift/Lesson10.html). – penatheboss

+1

Vous devez distinguer SKView de UIView, sprite-kit et UIKit, utilisez le projet de démonstration pour mieux comprendre ce qu'est un skscene –

Répondre

2

Vous pouvez afficher une vue contextuelle . Vous pouvez créer .xib et concevoir votre vue de pause comme vous le souhaitez. Ensuite, vous pouvez reprendre le jeu sans rien réinitialiser.

Exemple de code:

// Set Pause Page 
    var pauseView = PauseView.loadFromNib() // need an extension 

    @IBAction func Pause(sender: UIButton) { 
    pauseView.btnResume.addTarget(self, action: #selector(resume(_:)), forControlEvents: .TouchUpInside) 
    // set place on view 
    view.addSubview(pauseView) 
    } 

    func resume(sender:UIButton) { 
    pauseView.removeFromSuperview() 
    } 

J'ai créé une démo pour vous:

démo complète disponible sur Github:Get Source Code

+0

Merci. C'est ce que j'espérais possible. Je vais essayer! –

+0

OP a demandé un projet de kit de sprite, vous avez construit un projet UIKit, votre projet n'a pas répondu à la question –

+0

OMG. J'ai sauté ce détail :( – fatihyildizhan

0

Créer une variable dans votre contrôleur de vue original:

var shouldReset = true 

Ensuite, lorsque vous effectuez une Segue arrière, ajoutez dans votre prepareForSegue:

let vc = destination as! //Your view controller 
vc.shouldReset = false 

Dans votre viewDidLoad (ou chaque fois que vous réinitialiser vos données):

if shouldReset == true { 
    //Reset 
} 
+0

Eh bien. Pour moi, tous ces fichiers sont très problématiques en ce moment ... J'ai un jeu de sprite gamescene appelé PlayGameScene où je crée des nœuds volant à travers l'écran. Je veux qu'ils restent immobiles dans les airs, tant que c'est le contrôleur de vue de pause, qui est au point. Quand je reviens, je veux que les nœuds continuent leur voyage. J'ai aussi un PlayViewController. Alors, où dois-je placer le code? (désolé pour ma stupidité) –