Ios 尝试重置时保留旧值的变量

Ios 尝试重置时保留旧值的变量,ios,swift,Ios,Swift,我对Swift和编程相当陌生,所以这可能看起来很基本,但在今天试图解决这个问题时,我还无法在StackOverflow或Google上找到答案 我正在创建一个有趣的基本生命计数器应用程序,但当我试图重置用户的生命总数时遇到了一些问题。我可以从起始值中加减总数,但当我运行reset时,初始值会保留在内存中 例如,如果一号玩家有9条生命,而二号玩家有0条生命,如果我按下重置按钮,两个总数将显示10(默认值),但是,如果我从一号玩家中减去1,则显示8,如果我向二号玩家添加1,则显示1而不是11 我想我

我对Swift和编程相当陌生,所以这可能看起来很基本,但在今天试图解决这个问题时,我还无法在StackOverflow或Google上找到答案

我正在创建一个有趣的基本生命计数器应用程序,但当我试图重置用户的生命总数时遇到了一些问题。我可以从起始值中加减总数,但当我运行reset时,初始值会保留在内存中

例如,如果一号玩家有9条生命,而二号玩家有0条生命,如果我按下重置按钮,两个总数将显示10(默认值),但是,如果我从一号玩家中减去1,则显示8,如果我向二号玩家添加1,则显示1而不是11

我想我需要以某种方式传递reset的值,还是将默认变量放在其他地方?感谢您的帮助。谢谢

import UIKit

class ViewController: UIViewController {

@IBOutlet weak var playerOneAdd: UIButton!
@IBOutlet weak var playerOneMinus: UIButton!
@IBOutlet weak var playerOneLife: UILabel!
@IBOutlet weak var playerTwoMinus: UIButton!
@IBOutlet weak var playerTwoPlus: UIButton!
@IBOutlet weak var playerTwoLife: UILabel!
@IBOutlet weak var resetButton: UIButton!

var playerOne = 10
var playerTwo = 10

override func viewDidLoad() {
    super.viewDidLoad()

    playerOneLife.transform = CGAffineTransformMakeRotation(3.14)
}

@IBAction func PlayerOnePlusButton(sender: AnyObject) {
    ++playerOne
    playerOneLife.text = String(playerOne)
}

@IBAction func playerOneMinusButton(sender: AnyObject) {
    --playerOne
    playerOneLife.text = String(playerOne)
}

@IBAction func playerTwoMinusButton(sender: AnyObject) {
    --playerTwo
    playerTwoLife.text = String(playerTwo)
}

@IBAction func playerTwoPlusButton(sender: AnyObject) {
    ++playerTwo
    playerTwoLife.text = String(playerTwo)
}

@IBAction func resetPressed(sender: AnyObject) {
    var playerOne = 10
    var playerTwo = 10
    playerOneLife.text = String(playerOne)
    playerTwoLife.text = String(playerTwo)
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

}

再次调用
var
时,重新定义变量。你应该把它设置为相等

playerOne = 10
playerTwo = 10

您需要删除
resetPressed
中的
var
关键字:

@IBAction func resetPressed(sender: AnyObject) {
    playerOne = 10
    playerTwo = 10
    playerOneLife.text = String(playerOne)
    playerTwoLife.text = String(playerTwo)
}

var
关键字定义了一个新变量。因为变量是在函数内部声明的,所以它们是局部变量,并且重写实例变量。局部变量是函数的局部变量,因此在其他函数中无法访问重写的变量。

Ahh,我知道我在做一些奇怪的事情。非常感谢你!