gpt4 book ai didi

ios - 当按下按钮触发时,UILabels 不会立即更新

转载 作者:行者123 更新时间:2023-11-30 11:40:49 24 4
gpt4 key购买 nike

我让我的学生做一个基本的按钮点击“战斗”游戏,玩家可以按下按钮进行攻击/防御等,我的学生需要跟踪玩家和敌人的健康状况,并更新游戏上的标签屏幕随时发生变化。

我们几乎都以同样的方式处理这个问题......按住ctrl键单击一个按钮并将其拖动到代码中,在弹出的弹出窗口中选择“action”,它创建一个函数,该函数在玩家点击按钮。在该函数内部更改一些 HP 并更新与该 HP 相关的标签。像这样的事情...

@IBaction func playerAttacks {
enemyHP -= 30
enemyHPLabel.text = String(enemyHP)
}

10 个学生项目中有 9 个项目始终如一。每隔一段时间,学生的项目就根本无法正常工作。单击该按钮不会更新标签。然而,使用打印语句我可以看到它已经更新,如果我打印出enemyHPLabel.text我会得到新的HP。然而,它并没有在模拟器上更新。

如果再次单击,它会更新...但会更新为旧值。换句话说,第二次点击更新为第一次点击应更新的值,第三次点击更新为第二次应更新的值,依此类推。好像总是落后一击?

在研究这个问题时,我看到人们谈论网络代码并确保更新“主”线程中的标签,但我不确定这是否适用于这里?我们没有使用任何花哨的代码,这确实是基本的东西。 无论哪种方式,它对某些学生有效而对其他人不起作用,这非常令人困惑。

奇怪的信息,在学生将自己的图像放在按钮上(将其更改为“自定义”类型)之前,我们有几次遇到过这种情况。将其改回“系统”类型修复了它。然而这位同学并没有这么做,而且已经是“系统”类型了。

我们在 macOS High Sierra 10.13.2 上使用 XCode 9.2。所有这些在机器之间都是完全一致的。

有什么想法吗?

/编辑如果有人想看的话请附上该项目的链接:https://drive.google.com/file/d/1IXL6MsoQ4fv6VYRocFeyMmPOMGyu7kUp/view?usp=sharing

最佳答案

尝试:

 var enemyHP = 300;
@IBOutlet weak var enemyHPLabel: UILabel!
@IBAction func playerAttacks() {
enemyHP -= 30
DispatchQueue.main.async {
self.enemyHPLabel.text = String(self.enemyHP)
}
}

关于ios - 当按下按钮触发时,UILabels 不会立即更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49307202/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com