我想實時與UISlider來計算一個數字,這是我的方法:UISlider的ValueChanged動作不靈
@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
的價值實時變化,太?
只有幾件事情你可以嘗試。 1)你可以在你的方法中將'resultLabel.text'的值設置爲一個「普通」字符串嗎? (例如,如果將該值設置爲'resultLabel.text =「Hello World」',那麼這是否有效?)2)您的'calculate'函數返回什麼?嘗試在'return'之前添加一個'print(numberOfShots)'來查看'calculate'的結果是什麼。 – pbodsk
@pbodsk yeah'resultLabel'可以改變,但'calculate'不會返回任何東西 –
好的......現在我們知道在哪裏看那麼:)。當你說「不返回任何東西」時,你的意思是它返回0還是不返回任何東西?(因爲它應該是正確的?我的意思是,你已經聲明瞭一個方法,預期返回一個'Int' ) – pbodsk