我有两个标签,我将其称为 labelA 和 labelB。我还有一些触发一些代码的按钮。这是一个。
@IBAction func buttonA1(_ sender: UIButton) {
if game1 == true && points > 99{
points -= 100
perClick1 += 1
labelA.text = "Points Per Click: \(String(perClick1))"}}
有多个按钮具有类似的 if 语句和代码,仅更改 Integer 类型变量,但这些按钮也不起作用。
我还有另一组按钮,它们之间具有相同的差异。这是一个。
@IBAction func buttonB1(_ sender: UIButton) {
if game1 == true && points > 999{
points -= 1000
perSec1 += 1
labelB.text = "Points Per Second:\(String(perSec1))"}}
在按下按钮A1之前,当我启动游戏1时,labelA读取0,即使在我启动游戏1时,我将labelA设置为perClick1,它在创建时等于1。创建后我没有让它减少。但是 perSec 在创建时等于 0。当我按下按钮 A1 时,标签仍然显示 0。但是当我按下按钮 B1 时,两个标签都设置为 perSec1,即使只有 labelB 是这样的。基本上,labelA 在被告知时不会更新,而是在 labelB 应该更新时更新并显示 labelB 应该显示的内容,而 labelB 会正确更新。有人可以告诉我发生了什么事并给我解决方案吗?
我已经检查了所有变量并确保所有 if 语句都在运行并且它们都在运行。我也尝试过做像
reloadInputViews()
这样的事情,但我不能,因为我是初学者,不知道如何做与firstResponder相关的事情。另外,我不知道线程是如何工作的,但从我在 stackOverflow 上其他地方读到的内容来看,它是关于线程的(labelA 在应该更新时没有更新的位,而不是更新到错误消息的位)。有人可以帮忙吗(拜托)?(我以为我删除了这一点)
如果您在单独的行上使用大括号来格式化代码,这会有所帮助:
@IBAction func buttonA1(_ sender: UIButton) {
if game1 == true && points > 99 {
points -= 100
perClick1 += 1
labelA.text = "Points Per Click: \(String(perClick1))"
}
}
大括号内的 3 行代码将在 game1
为 true
AND
points
大于 99 时执行 ONLY。
否则什么都不会发生。
您需要一个
else
块,或者更有可能的是,您希望在每次单击/点击时更新标签:
@IBAction func buttonA1(_ sender: UIButton) {
if game1 == true && points > 99 {
points -= 100
}
perClick1 += 1
labelA.text = "Points Per Click: \(String(perClick1))"
}