2017-05-21 1 views
0

J'ai 2 UIViewControllers, l'un démarrant le GameScene et l'autre censé montrer le highscore, comme ci-dessous. Le problème est que mon deuxième UIViewController ne veut pas montrer le highscore. Il continue à montrer 0 tout le temps. Est-ce que quelqu'un sait quel est le problème? J'ai essayé d'utiliser viewDidLoad ainsi que viewWillAppear mais aucun d'eux ne fonctionne.viewController ne se met pas à jour

override func viewDidLoad() { 
     super.viewDidLoad() 

     let label = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 21)) 
     label.center = CGPoint(x: 160, y: 285) 
     label.textAlignment = .center 
     label.text = String(GameScene().highScore) 
     self.view.addSubview(label) 

    } 

dans le GameScene, j'ai déclaré highScore comme si:

var highScore = Int() 

et utilisé dans une fonction GameOver comme si:

if score > highScore {highScore = score} 

grâce

+0

http : //matteomanferdini.com/how-ios-view-controllers-communicate-with-each-other/ –

+0

Vous devez transmettre des données du contrôleur actuel au contrôleur sur lequel vous naviguez. –

Répondre

0

label.text = String(GameScene().highScore)

Ce morceau de ligne suggère GameScene est une classe statique. Un peu moins, vous ne pouvez tout simplement pas accéder aux variables de cette manière.

Vous devrez transmettre des données entre les contrôleurs de vue pour transmettre des données entre les scènes. Vous pouvez transmettre des données en utilisant l'une des trois options suivantes:

  1. Bien que performSegue()
  2. performSegueWithIdentifier() et établir une connexion à IB
  3. établir une connexion à IB et définir une action
+0

merci, cela aide, mais maintenant je rencontre le problème de comment passer la valeur highScore de GameScene, dans un contrôleur de vue, puis dans un autre contrôleur de vue, je donne la même chose 0 pour le score, ce qui n'est pas correct. –

+0

Qu'est-ce que GameScene.swift? Est-ce une classe qui étend UIViewController ou étend-elle NSObject? – Karthik

+0

Il étend UIViewController –