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中更改它。这很有意义。非常感谢。