加载,在第二个视图控制器上保存高分
问题描述:
我想加载并保存我的高分只在gameOverViewController。我已成功将secondViewController的分数转移到gameOverViewController。 gameOverViewController就像屏幕上的普通游戏一样,显示你的分数,高分,并有重试和主菜单按钮。我试图设置highScoreLabel等于scoreGameOverLabel,它运行,但highScore int保持在0并且不等于gameOverScore。我想:加载,在第二个视图控制器上保存高分
- 如果评分>高分,高分=得分
-
如果分数<高分,高分仍相同
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
}
答
在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")
}
贮藏它到'UserDefaults'将保持用户的高分,即使他们离开你的应用程序。你能显示你收到的错误吗? – gbhall
你说得对,我有一个错字。现在它在应用程序中保存我的分数和highScore,但是当我关闭应用程序时,highScore不会保存。 – ZDP
你确定它没有保存吗? – gbhall