为什么我的 UILabel 没有正确更新其文本?/为什么我的 UILabel 显示错误的文本?

问题描述 投票:0回答:1

我有两个标签,我将其称为 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 在应该更新时没有更新的位,而不是更新到错误消息的位)。有人可以帮忙吗(拜托)?(我以为我删除了这一点)

ios swift uiviewcontroller uilabel
1个回答
0
投票

如果您在单独的行上使用大括号来格式化代码,这会有所帮助:

@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))"
}
© www.soinside.com 2019 - 2024. All rights reserved.