Can';Swift中的t增量变量-不抛出任何错误

Can';Swift中的t增量变量-不抛出任何错误,swift,increment,Swift,Increment,(我对编程非常陌生,因此欢迎外行友好的回答) 我正在做一个两队的比赛。我有一个按钮,用于检查哪支球队的得分,然后更新该队的得分。代码运行时没有错误,但按下按钮时分数不会更新 在我的模型文件中,我声明 var teamOneScore = 0 var teamTwoScore = 0 var teamCounter = 2 在视图控制器中,我有 @IBAction func buttonPressed(sender: AnyObject) { if timer.valid &am

(我对编程非常陌生,因此欢迎外行友好的回答)

我正在做一个两队的比赛。我有一个按钮,用于检查哪支球队的得分,然后更新该队的得分。代码运行时没有错误,但按下按钮时分数不会更新

在我的模型文件中,我声明

var teamOneScore = 0
var teamTwoScore = 0
var teamCounter = 2
在视图控制器中,我有

    @IBAction func buttonPressed(sender: AnyObject) {
    if timer.valid && teamCounter % 2 == 0 {
        ++teamOneScore
    } else if timer.valid && teamCounter % 2 != 0 {
        ++teamTwoScore
    }
}
在viewDidLoad中

        if teamCounter % 2 == 0 {
        scoreLabel.text = "Score: \(teamOneScore)"
    } else {
        scoreLabel.text = "Score: \(teamTwoScore)"
    }

加载视图时,scoreLabel正确显示0,但当我按下按钮时,显示的分数不会上升。计时器和teamCounter检查在代码中的其他地方都可以正常工作,我有另一个按钮,可以毫无问题地增加teamCounter(在模型中也存储为int)。所以buttonPressed的所有独立组件似乎都工作正常,我没有任何错误。我被难住了。

当你在
viewdiload
中创建
scoreLabel
时,你给它分配了一个文本值
“Score:\(teamOneScore)”
,这很好。但是,当您增加
teamOneScore
变量时,实际的
UILabel
不知道如何更改其
文本。它假定您希望显示
分数:0
。即使变量更改了其值,该标签也已创建,并将继续显示初始化的任何文本

您需要在按下的
按钮中执行的操作是添加

scoreLabel.text=“分数:\(teamOneScore)”
scoreLabel.text=“Score:\(teamOneScore)”
如果是第二队得分


在你增加分数之后。这就是允许标签文本实际更改的原因。

您必须用额外的方法移动文本设置。现在文本只在viewDidLoad中设置-但是该函数不会被触发多次

将viewDidLoad更改为

updateUI()
添加一个新函数

func updateUI() {
    if teamCounter % 2 == 0 {
        scoreLabel.text = "Score: \(teamOneScore)"
    } else {
        scoreLabel.text = "Score: \(teamTwoScore)"
    }
}
并调用该方法作为按钮操作的最后一项:

@IBAction func buttonPressed(sender: AnyObject) {
    if timer.valid && teamCounter % 2 == 0 {
        ++teamOneScore
    } else if timer.valid && teamCounter % 2 != 0 {
        ++teamTwoScore
    } 
    updateUI()
}

经过数小时的代码修改,我在这个问题上点击了submit之后,我立即点击了这个按钮。啊!谢谢你及时、准确、礼貌的回复。没问题,很高兴我能帮忙。如果这足以解决问题,您可以将答案标记为“正确”。这将帮助未来的用户,并提醒其他响应者问题已经得到了回答:)@luk2302的方法也非常有用,可能是一个更好的实现,因为它为您提供了一个可以在任何地方使用的功能。非常感谢。我决定将文本更新添加到我的buttonPressed函数中。创建一个单独的新函数是否有好处?它将统一文本的初始显示和未来的任何更改-例如,如果您想显示不同的文本,您不必在ViewDiLoad和按钮Pressed中更改它。这很有意义。非常感谢。