Я хочу, чтобы вычислить количество в режиме реального времени с 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
«s значение для изменения в режиме реального времени, тоже?
Всего несколько вещей для вас, чтобы попробовать. 1) Можете ли вы установить значение 'resultLabel.text' в« нормальную »строку в вашем методе? (например, если вы установите значение 'resultLabel.text =" Hello World "', то это работает?) 2) Что возвращает функция 'calculate'? Попробуйте добавить 'print (numberOfShots)' непосредственно перед 'return', чтобы узнать, что такое результат вычисления. – pbodsk
@pbodsk yeah 'resultLabel' может измениться, но' calculate' ничего не возвращает –
OK ... теперь мы знаем, где искать тогда :). Когда вы говорите «ничего не возвращает», вы имеете в виду, что он возвращает 0 или вообще не возвращает ничего (потому что это должно быть правильно? Я имею в виду, вы объявили метод, который, как ожидается, вернет «Int») – pbodsk