Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在第二视图控制器上加载、保存高分_Ios_Swift_Uiviewcontroller - Fatal编程技术网

Ios 在第二视图控制器上加载、保存高分

Ios 在第二视图控制器上加载、保存高分,ios,swift,uiviewcontroller,Ios,Swift,Uiviewcontroller,我正在尝试仅在gameOverViewController上加载并保存我的高分。我已成功地将分数从secondViewController传输到gameOverViewController。gameOverViewController就像一个普通的屏幕游戏,显示你的分数、高分,并有重试和主菜单按钮。我尝试将highScoreLabel设置为scoreGameOverLabel,它运行,但highScore int保持为0,不等于gameOverScore。我正在努力: 如果分数>高分,高分=分数

我正在尝试仅在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相同。。。