Bad to Set slider.value Когда пользователь изменил положение ползунка? - PullRequest
1 голос
/ 14 августа 2011

В онлайн-курсе Stanford CS193p для iPhone курс, лекция 6, создается приложение с ползунком в качестве ввода и настраиваемым представлением в качестве вывода.

Когдаползунок изменен, контроллер вида снова устанавливает значение ползунка.

Важные биты контроллера вида в Счастье 2.zip :

@implementation HappinessViewController

@synthesize happiness;

- (void)updateUI
{
    // assignment-loop when called from happinessChanged:?
    self.slider.value = self.happiness; // sets slider to model's (corrected) value
    [self.faceView setNeedsDisplay];
}

- (void)setHappiness:(int)newHappiness
{
    if (newHappiness < 0) newHappiness = 0; // limit value
    if (newHappiness > 100) newHappiness = 100;
    happiness = newHappiness;
    [self updateUI]; // changed happiness should update view
}

- (IBAction)happinessChanged:(UISlider *)sender // called by changed slider
{
    self.happiness = sender.value; // calls setter setHappiness:
}

Не приводит ли это к циклу (изменен ползунок -> обновлена ​​модель -> изменен ползунок ->?)?

Или это даже хорошая практика?

1 Ответ

1 голос
/ 15 августа 2011

Если ползунок обновляется из кода, а не пользователем, он, вероятно, не отправляет действие valueChanged. Таким образом, вы не получите бесконечный цикл.

Это может быть использовано для «исправления» значения, выбранного пользователем, или для принудительного перемещения ползунка к обычным отметкам вместо гладкой шкалы.

...