Опитвам се да използвам една променлива (диаметър), за да действам съвместно с друга променлива (baseCurve), така че за всяко 0,5 увеличение на диаметъра, baseCurve се коригира надолу с 0,25, а за всяко 0,5 намаление на диаметъра, baseCurve се коригира нагоре с 0,25.
Диаметърът се регулира на стъпки от 0,1 чрез щракване върху бутон "увеличаване" или "намаляване". Изглежда достатъчно просто, но не мога да преодолея проблема, който възниква, когато потребителят добави по-малко от 0,5 и след това обърне курса.
Пример (кодът работи по предназначение): начален диаметър = 9,0; начална базова крива = 42.50
Потребителят кликва върху „Увеличаване“ 5 пъти, сега диаметър = 9,5; базова крива = 42.25
Пример за проблем: начален диаметър = 9,0; начална базова крива = 42.50
Потребителят кликва върху „Увеличаване“ 1x, сега диаметър = 9,1; базова крива = 42.50
След това потребителят щраква върху „Намаляване“ 1x, сега диаметър = 9.0; базова крива = 42,75.
Проблемът е, че не трябваше да се прави корекция, но моят код е настроен да прави корекции въз основа на резултат от модула, което води до проблема.
Може ли някой да ме насочи към подход, който основно ще позволи на потребителя да коригира baseCurve с 0,25 за всяка нетна промяна от 0,5 в диаметър? Подходът, който съм предприел, използвайки брояч и проверка на модула, не работи, поне както съм го настроил. Пробвах и с превключвател, но не мога да избегна същия проблем. Има ли някакъв начин да се използват няколко булеви стойности, за да работи това? Много благодаря предварително.
var adjustmentSum = 0
var baseCurve = 45.00
var diameter = 9.0
let diameterAdjustmentValue : Float = 0.1
let baseCurveAdjustmentValue : Float = 0.25
@IBAction func increaseDiameter(sender: AnyObject) {
adjustmentSum++
diameter = diameter + diameterAdjustmentValue
if adjustmentSum % 5 == 0 {
baseCurve = baseCurve - baseCurveAdjustmentValue
}
}
@IBAction func decreaseDiameter(sender: AnyObject) {
adjustmentSum--
diameter = diameter - diameterAdjustmentValue
if adjustmentSum % 5 == 0 {
baseCurve = baseCurve + baseCurveAdjustmentValue
}
}