2017-08-08 73 views
0

我想加载并保存我的高分只在gameOverViewController。我已成功将secondViewController的分数转移到gameOverViewController。 gameOverViewController就像屏幕上的普通游戏一样,显示你的分数,高分,并有重试和主菜单按钮。我试图设置highScoreLabel等于scoreGameOverLabel,它运行,但highScore int保持在0并且不等于gameOverScore。我想:加载,在第二个视图控制器上保存高分

  1. 如果评分>高分,高分=得分
  2. 如果分数<高分,高分仍相同

    var addOne = 0 
    class SecondViewController: UIViewController 
    { 
    
    @IBOutlet weak var score: UITextField! 
    
    score.text = "\(addOne)" 
    
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    
    let gameOver = segue.destination as! GameOverViewController 
    
    gameOver.gameOverText = score.text! 
    gameOver.lastScore = addOne 
    } 
    

gameOverViewController

class GameOverViewController: UIViewController { 


@IBAction func retryButton(_ sender: Any) { 
addOne = 0 
    highScoreLabel.text = NSString(format: "%i", highScore) as String 
} 

@IBAction func mainMenuButton(_ sender: Any) { 
addOne = 0 
    highScoreLabel.text = NSString(format: "%i", highScore) as String 
}   

var lastScore = 0 
var highScore = UserDefaults.standard.integer(forKey: "high_score") 

@IBOutlet weak var highScoreLabel: UILabel! 

@IBOutlet weak var scoreGameOverLabel: UILabel! 

var gameOver = "" 

override func viewDidLoad() { 
    super.viewDidLoad() 

    if lastScore > highScore { 
     highScore = lastScore 
     highScoreLabel.text = NSString(format: "%i", highScore) as String 
     UserDefaults.standard.set(highScore, forKey: "high_score") 
    }     
    scoreGameOverLabel.text = gameOver  
} 

回答

1

SecondViewController中,尝试设置您的最后一个分数。

gameOver.lastScore = addOne 

GameOverViewController添加lastScore变量,并跟踪您的高分。

var lastScore = 0 
var highScore = UserDefaults.standard.integer(forKey: "high_score") 

if lastScore > highScore { 
    highScore = lastScore 
    UserDefaults.standard.set(highScore, forKey: "high_score") 
} 
+0

贮藏它到'UserDefaults'将保持用户的高分,即使他们离开你的应用程序。你能显示你收到的错误吗? – gbhall

+0

你说得对,我有一个错字。现在它在应用程序中保存我的分数和highScore,但是当我关闭应用程序时,highScore不会保存。 – ZDP

+0

你确定它没有保存吗? – gbhall

1

首先

highScoreLabel = scoreGameOverLabel 

或许应该

highScoreLabel.text = scoreGameOverLabel.text 

其次,按您的片断,在GameOverViewController没有addOne,你怎么设置它并使用它来比较。如果条件?

+0

高分INT仍停留在0 – ZDP

+0

您没有设置或初始化 –

+0

后的任意位置递增高分的价值我更新的代码,以便addOne =高分,但仍无法正常工作,并说高分是0 – ZDP

相关问题