Ios 尝试重置时保留旧值的变量
我对Swift和编程相当陌生,所以这可能看起来很基本,但在今天试图解决这个问题时,我还无法在StackOverflow或Google上找到答案 我正在创建一个有趣的基本生命计数器应用程序,但当我试图重置用户的生命总数时遇到了一些问题。我可以从起始值中加减总数,但当我运行reset时,初始值会保留在内存中 例如,如果一号玩家有9条生命,而二号玩家有0条生命,如果我按下重置按钮,两个总数将显示10(默认值),但是,如果我从一号玩家中减去1,则显示8,如果我向二号玩家添加1,则显示1而不是11 我想我需要以某种方式传递reset的值,还是将默认变量放在其他地方?感谢您的帮助。谢谢Ios 尝试重置时保留旧值的变量,ios,swift,Ios,Swift,我对Swift和编程相当陌生,所以这可能看起来很基本,但在今天试图解决这个问题时,我还无法在StackOverflow或Google上找到答案 我正在创建一个有趣的基本生命计数器应用程序,但当我试图重置用户的生命总数时遇到了一些问题。我可以从起始值中加减总数,但当我运行reset时,初始值会保留在内存中 例如,如果一号玩家有9条生命,而二号玩家有0条生命,如果我按下重置按钮,两个总数将显示10(默认值),但是,如果我从一号玩家中减去1,则显示8,如果我向二号玩家添加1,则显示1而不是11 我想我
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,我知道我在做一些奇怪的事情。非常感谢你!