在其他视图控制器上保存高分

时间:2015-08-06 13:42:51

标签: swift cocoa-touch uiviewcontroller

我点击一个按钮,得到积分,我点击另一个按钮,游戏结束。分数已保存。但是现在我希望能够获得高分。如何才能在第二个视图控制器上看到高分?

2 个答案:

答案 0 :(得分:1)

让您的第一个视图控制器为ViewController,第二个视图控制器为ViewController_2。并且在scores中有一个名为ViewController的数组,您在单击button时设置该数组。现在,您需要另一个Int类型ViewController_2中的变量,让它为score_2,得分为HighScore。

以下是ViewController_2的外观:

class ViewController_2: UIViewController {
      var score_2:Int;
      override func viewWillAppear(){
        //ScoreLabel.text="High Score : \(score_2)"
      }
    }

以下是ViewController的外观:

class ViewController: UIViewController {
  var scores:[Int];

  @IBAction func foo(sender:Button) {
    let score:Int=getScore()
    scores.append(score)
  }

  override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    var destination=segue.destinationViewController as ViewController_2
    destination.score_2=maxElement(self.scores)
 }
}

了解segues,它一定会对您有所帮助。

答案 1 :(得分:0)

保存高分的最佳方法是NSUserDefaults。这将允许您保存诸如高分的内容,然后在您的应用程序中随时调用它。

let highscore = label.text;
NSUserDefaults.standardUserDefaults().setObject(highscore, forKey: "Highscore")
    NSUserDefaults.standardUserDefaults().synchronize()

在这种情况下,我有标签中的任何内容,然后保存为新的高分。您需要实现一种方法,以确保此分数必须高于您之前的高分才能保存。

如果你想将它调用到另一个视图控制器,你所要做的就是:

        NewLabel.text = NSUserDefaults.standardUserDefaults().stringForKey("Highscore")

我希望这会有所帮助