Стойността на 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