Ios 在第二视图控制器上加载、保存高分
我正在尝试仅在gameOverViewController上加载并保存我的高分。我已成功地将分数从secondViewController传输到gameOverViewController。gameOverViewController就像一个普通的屏幕游戏,显示你的分数、高分,并有重试和主菜单按钮。我尝试将highScoreLabel设置为scoreGameOverLabel,它运行,但highScore int保持为0,不等于gameOverScore。我正在努力:Ios 在第二视图控制器上加载、保存高分,ios,swift,uiviewcontroller,Ios,Swift,Uiviewcontroller,我正在尝试仅在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
}
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
}
首先
highScoreLabel = scoreGameOverLabel
应该是
highScoreLabel.text = scoreGameOverLabel.text
其次,根据您的代码片段,在GameOverViewController中没有添加一个,您如何设置它并使用它在If条件下进行比较?首先
highScoreLabel = scoreGameOverLabel
应该是
highScoreLabel.text = scoreGameOverLabel.text
其次,根据您的代码片段,在GameOverViewController中没有
addOne
,您如何设置它并使用它在If条件下进行比较?在SecondViewController
中,尝试设置您的最后分数
gameOver.lastScore=addOne
在GameOverViewController
中添加lastScore
变量并跟踪您的高分
var lastScore=0
var highScore=UserDefaults.standard.integer(forKey:“高分”)
如果lastScore>highScore{
highScore=最新分数
UserDefaults.standard.set(高分,forKey:“高分”)
}
在SecondViewController
中,尝试设置您的最后分数
gameOver.lastScore=addOne
在GameOverViewController
中添加lastScore
变量并跟踪您的高分
var lastScore=0
var highScore=UserDefaults.standard.integer(forKey:“高分”)
如果lastScore>highScore{
highScore=最新分数
UserDefaults.standard.set(高分,forKey:“高分”)
}
highScore int仍然保持在0。初始化后,您不会在任何地方设置或增加highScore的值。我更新了代码,因此addOne=highScore,但仍然不起作用,并说highScore为0 highScore int仍然保持在0。初始化后,您没有在任何地方设置或增加highScore的值。我更新了代码,使addOne=highScore,但仍然不起作用,并且说highScore是0将其存储到UserDefaults
将持续保持用户的高分,即使他们离开你的应用程序。你能指出你的错误吗?你是对的,我有一个打字错误。现在它正在应用中保存我的分数和高分,但当我关闭应用时,高分不会保存。你确定它不会保存吗?是的,每次我双击home并关闭应用时,高分会重置为0。如果更新的代码反映了你所做的更改,你忘了将highScore更改为与我加载它的var相同…将其存储到UserDefaults
将保持用户的高分,即使他们离开你的应用程序。你能指出你的错误吗?你是对的,我有一个打字错误。现在它正在应用程序中保存我的分数和highScore,但当我关闭应用程序时highScore不会保存。你确定它不会保存吗?是的,每次我双击home并关闭应用程序时,highScore都会重置为0。如果你的更新代码反映了你所做的更改,你忘记将highScore更改为与我加载它的var相同。。。