2014-09-23 4 views
0

Я пытаюсь на весь день правильно установить значение на слайдере. Это сводит меня с ума.UISlider setValue не работает

Во-первых, эта часть кода работает. Я получаю сообщение от WebSocket (библиотека socketRocket), что я конвертировать плавать, и я установить ползунок в нужное положение

- (void) webSocket:(SRWebSocket *) webSocket didReceiveMessage:(id)message{ 
     float stateValue = [message floatValue]; 
     zoneSlider.value = stateValue; 
     zoneSlider.alpha = 1; 
    } 

Так что этот код правильно устанавливает значение ползунка (zoneSlider) и делает его видимым, только то, что мне нужно.

Но для первого открытия представления мне также необходимо установить программный код слайдера на значение по умолчанию (по некоторым причинам его настройка непосредственно в инспекторе атрибутов раскадровки не подходит для моей потребности).

Я написал этот код:

float defaultValue = 30.0f; 
[zoneSlider setValue:defaultValue animated:NO]; 
zoneSlider.alpha = 1; 

И он устанавливает ползунок до нуля (вверху слева). Я попробовал несколько решений (сделайте float из NSString, чтобы скопировать то, что работает с сообщением webSocket, используя zoneSlider.value = defaultValue и т. Д.).

Я что-то не так?

Спасибо!

PS: Оба слайдера setValue (рабочий и не рабочий) используются, когда сообщение получено webSocket (метод didReceiveMessage). Тем не менее, для нерабочего сообщения отправляется в сокет внутри метода dispatch_async (что я совершенно не знаком с ...). Это может быть быть источником неприятностей, хотя я не вижу причин для этого.

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
    while (viewActive == true){ 
     // Pause between refresh 
     NSDate *future = [NSDate dateWithTimeIntervalSinceNow: 5 ]; 
     [NSThread sleepUntilDate:future]; 

     //Code in this part is run on a background thread 
     [self sendGetState]; //Then a message is sent and we go to the setValue 
    } 
}); 

ответ

-1

Я нашел свою проблему! Я допустил ошибку в довольно длительной и сложной серии тестов «если». Нужно было «еще если».

Rookie ошибка, я буду более строгим в моем отступа в будущем ...

+0

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

1

Вы пытались изменить максимальное и минимальное значение?

+0

Я просто попытался это. Я переключился с 0-100 до -50 - 50. Это не сильно изменилось, но я заметил что-то интересное. Ползунок вместо того, чтобы быть установленным до 30 (почти максимальный правый в этом случае), теперь спускается до 0, когда я использую этот метод. Я думаю, что что-то не так с моим поплавком, но я не вижу, что – Charles

+0

Кроме того, я попытался добавить преобразование сообщения в float в нерабочем методе. Он работает правильно, поэтому я предполагаю, что ключ «thread», который у меня был, не имеет значения. – Charles

+0

это сделало трюк для меня. – iAkki

Смежные вопросы