Значение UISlider изменило результат обновления

У меня есть три метки, получающие вывод из трех UISliders. Результат вычисляется и помещается на четвертую метку при касании сегментированного элемента управления.

Как мне обновить результат, если одно из значений ползунка изменяется без повторного касания сегментированного элемента управления?


person user1452710    schedule 22.06.2012    source источник
comment
Почему бы вам просто не обновить фактический результат при перемещении любого из ползунков? Расчет на лету!!! Также опубликуйте свой код, чтобы мы могли его посмотреть и, возможно, просто отредактировать!!!   -  person trumpetlicks    schedule 22.06.2012


Ответы (2)


Во-первых, добавьте событие для изменения значений вашего ползунка:

[mySlider addTarget:self 
             action:@selector(sliderValueChanged:) 
   forControlEvents:UIControlEventValueChanged];

Вы захотите сделать это для каждого слайдера.

В вашей функции sliderValueChanged::

- (void)sliderValueChanged:(id)sender {
    [self calculateResult];
}

В calculateResult вы можете выполнять расчеты и устанавливать поле результатов.

Если вам нужно сначала убедиться, что ваш сегментированный элемент управления находится в каком-то состоянии, просто добавьте предложение if к sliderValueChanged:.

- (void)sliderValueChanged:(id)sender {
    if ([mySegmentedControl selectedSegmentIndex] == 1) {
        [self calculateResult];
    }
}
person mopsled    schedule 22.06.2012
comment
Благодарю вас! Я придумал кое-что, что сработало из ваших предложений. - person user1452710; 15.07.2012

Я придумал что-то, что сработало, используя ответ mopsled:

if (UIControlEventValueChanged && mySeg.selectedSegmentIndex == 0) {
    float floatResult = [f3.text floatValue]-[f2.text floatValue];
    float coldFactor = [fcold.text floatValue]*floatResult;
    float result = [f1.text floatValue]+coldFactor;

    NSString *tpResult = [[NSString alloc] initWithFormat:@"%.0f",result];
    f4Result.text = tpResult;             
}
person user1452710    schedule 14.07.2012