我想用UISlider实时计算一个数字,这是我的方法:
@IBAction func HPsliderValueChanged(_ sender: CustomUISlider) {
calculator.HPPercentage = Double(HPSlider.value)
HPValue.text = String(Int(HPSlider.value * 100)) + " %"
resultLabel.text = String(calculator.calculate())
}
当用户滑动滑块时,HPValue
标签和resultLabel
都会改变值,但现在只有HPValue
标签更改,resultLabel
不起作用。
calculator
不是零,这是它的代码:
class TurretDiveCalculator {
var hero: Heroes = .taka
var build = [DefenseItems](repeatElement(DefenseItems(name: "Empty Item", index: 0, price: 0, image: #imageLiteral(resourceName: "EmptyItem")), count: 6))
var HPPercentage: Double = 0
func calculate() -> Int {
let baseHP = hero.HPLow + (hero.HPHigh - hero.HPLow) / 12 * Double(hero.level)
let baseDefense = hero.armorLow + (hero.armorHigh - hero.armorLow) / 12 * Double(hero.level) + hero.shieldLow + (hero.shieldHigh - hero.shieldLow) / 12 * Double(hero.level)
var buildHP = 0.0
var buildDefense = 0.0
for item in build {
buildDefense += item.armor
buildDefense += item.shield
buildHP += item.HP
}
let fullHP = baseHP + buildHP
var HP = fullHP
let defense = baseDefense + buildDefense
var numberOfShots = 0
while HP > 0 {
let perShotDamageRaw: Double = 330 + Double(numberOfShots) * 0.09 * fullHP
let mitigatedDamage: Double = 0.09 * perShotDamageRaw + 0.9 * perShotDamageRaw / (100 + defense) * 100
HP -= mitigatedDamage
numberOfShots += 1
}
return numberOfShots
}
}
如何让resultLabel
的价值实时变化?
答案 0 :(得分:0)
从聊天中可以看出,我们设法找到了问题。
这个答案只是一些常见的调试技巧和窍门,当出现这样的问题时。
最初的问题是:
现在只有HPValue标签发生变化,resultLabel无法正常工作。
让我们找出问题所在。这是代码:
resultLabel.text = String(calculator.calculate())
这里有两件事可能出错:
resultLabel
未正确连线。要查看是否是这种情况,请尝试将值设置为普通的'字符串,看看你是否能看到它。我可以,文本字段正确连接。
calculate()
方法返回意外值。尝试通过在print
return
语句来验证方法返回的内容
醇>
正如您在聊天中看到的那样,一旦我们将问题发生隔离,@ bright-future就会更容易追踪问题。
希望这可以帮助任何人在尝试调试问题时:)