UISlider не перерисовывает автоматически - PullRequest
0 голосов
/ 05 августа 2011

У меня есть UISlider в моем приложении, и мне иногда нужно обновить не только его значение, но и его минимальное значение. Значения изменяются, но если я вызываю метод setValue или назначаю новое значение для моего ползунка, у него есть новое значение, но ползунок не перерисовывает себя в положение, которое должно быть для этого нового значения. Как я могу перекрасить это? Это фрагмент кода, в котором я изменяю минимальное значение.

if([array count] < 50)
    [sliderTamanyo setMinimumValue:2];
else if([array count] < 200)
    [sliderTamanyo setMinimumValue:3];
else
    [sliderTamanyo setMinimumValue:4];
if(sliderTamanyo.value < sliderTamanyo.minimumValue)
     self.sliderTamanyo.value = self.sliderTamanyo.minimumValue;     
[self.sliderTamanyo setNeedsDisplay];                

Ответы [ 2 ]

2 голосов
/ 05 августа 2011

Поскольку UISlider наследует от UIView, вы не можете просто вызвать [yourSlider setNeedsDisplay]; после обновления значений.

Это заставит экземпляр UISlider полностью перерисовать себя и, следовательно, может занятьпринять во внимание новые значения, которые вы установили.

РЕДАКТИРОВАТЬ:

Кажется, есть некоторые общие проблемы при встраивании UISlider в UIBarButtonItem - пожалуйста, смотрите этот стекВопрос переполнения для получения дополнительной информации.

0 голосов
/ 08 августа 2011

Я решил это, удалив и снова добавив ползунок на панель инструментов. Я использовал этот код:

NSMutableArray *items = [NSMutableArray arrayWithArray:self.toolbar.items];
id slider = [items lastObject]; 
[items removeLastObject];
self.toolbar.items = items;    
[items addObject:slider];
self.toolbar.items = items;

Я восстановил свой слайдер, используя id вместо UISlider, потому что этот слайдер находится внутри UIBarButtonItem

...