2017-05-21 16 views
0

Ich habe 2 UIViewControllers, von denen einer das GameScene startet und der andere den Highscore zeigt, wie unten. Das Problem ist, dass mein zweiter UIViewController den udpated Highscore nicht anzeigen möchte. Es zeigt ständig 0. Weiß jemand, was das Problem ist? Ich habe versucht, mit ViewDidLoad sowie ViewWillAppear, aber keiner von ihnen funktioniert.viewController wird nicht aktualisiert

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) 

    } 

im GameScene, ich habe das Highscores als so erklärt:

var highScore = Int() 

und wie dies in einer gameover-Funktion verwendet:

if score > highScore {highScore = score} 

dank

+0

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

+0

Sie müssen Daten vom aktuellen Controller an den Controller übergeben, zu dem Sie navigieren. –

Antwort

0

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

Dieses Stück der Zeile schlägt vor, dass GameScene eine statische Klasse ist. Wie dem auch sei, Sie können einfach nicht auf Variablen zugreifen.

Sie müssen Daten zwischen den View-Controllern übergeben, um Daten zwischen den Szenen zu übertragen. Sie können Daten mit einem der drei Optionen übergeben:

  1. Obwohl performSegue()
  2. performSegueWithIdentifier() und eine Verbindung in IB
  3. eine Verbindung in IB machen machen und definieren eine Aktion
+0

danke, das hilft, aber jetzt laufe ich auf das Problem, wie der HighScore-Wert von GameScene, in einem View-Controller, dann in einem anderen View-Controller, gebe ich mir die gleiche Sache 0 für die Punktzahl, die nicht korrekt ist. –

+0

Was ist GameScene.swift? Ist es eine Klasse, die UIViewController erweitert oder NSObject erweitert? – Karthik

+0

Es erweitert UIViewController –